android接入腾讯信鸽推送服务(基于AndroidStudio)

一、快速上手

第一步:引入SDK

下载android-SDK,解压,引入AS,这里要注意的是,先切换到project项目结构下,把jar文件引入到libs(该文件夹无需新建,与src同级)文件夹下。这里有个坑,信鸽的SDK中带有一个support-v4包,如果原项目中用到v4包了,这里就不要再引入了,否则会发生冲突!

然后在src/main下新建一个文件夹,名叫『jniLibs』(必须叫这个名字,其他名字无效),把所有的.so文件连同.so文件所在的文件夹一起粘贴到jniLibs文件夹下。

第二步:修改manifests文件

<application
   <!-- APP项目的其它配置... -->
 
   <!-- 【必须】 信鸽receiver广播接收 -->
    <receiver
        android:name="com.tencent.android.tpush.XGPushReceiver"
        android:process=":xg_service_v2" >
        <intent-filter android:priority="0x7fffffff" >
            <!-- 【必须】 信鸽SDK的内部广播 -->
            <action android:name="com.tencent.android.tpush.action.SDK" />
            <action android:name="com.tencent.android.tpush.action.INTERNAL_PUSH_MESSAGE" />
            <!-- 【必须】 系统广播:开屏和网络切换 -->
            <action android:name="android.intent.action.USER_PRESENT" />
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
             
            <!-- 【可选】 一些常用的系统广播,增强信鸽service的复活机会,请根据需要选择。当然,你也可以添加APP自定义的一些广播让启动service -->
            <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
            <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
            <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
        </intent-filter>
    </receiver>
 
    <!-- 【必须】 (2.30及以上版新增)展示通知的activity -->
    <!-- 【注意】 如果被打开的activity是启动模式为SingleTop,SingleTask或SingleInstance,请根据通知的异常自查列表第8点处理-->
     <activity
         android:name="com.tencent.android.tpush.XGPushActivity"
         android:exported="false" >
         <intent-filter>
            <!-- 若使用AndroidStudio,请设置android:name="android.intent.action"-->
             <action android:name="" />
         </intent-filter>
    </activity>
 
    <!-- 【必须】 信鸽service -->
    <service
        android:name="com.tencent.android.tpush.service.XGPushService"
        android:exported="true"
        android:persistent="true"
        android:process=":xg_service_v2" />
  
    <!-- 【必须】 通知service,此选项有助于提高抵达率 -->
    <service
        android:name="com.tencent.android.tpush.rpc.XGRemoteService"
        android:exported="true" >
        <intent-filter>
            <action android:name="应用包名.PUSH_ACTION" />
        </intent-filter>
    </service>
 
    <!-- 【必须】 请将YOUR_ACCESS_ID修改为APP的AccessId,“21”开头的10位数字,中间没空格 -->
    <meta-data 
        android:name="XG_V2_ACCESS_ID"
        android:value="YOUR_ACCESS_ID" />
    <!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 -->
    <meta-data 
        android:name="XG_V2_ACCESS_KEY"
        android:value="YOUR_ACCESS_KEY" />
</application>
 
<!-- 【必须】 信鸽SDK所需权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 【可选】 信鸽SDK所需权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BATTERY_STATS" />

这里要注意把accessID和accessKey替换成自己的!

<!-- 【必须】 请将YOUR_ACCESS_ID修改为APP的AccessId,“21”开头的10位数字,中间没空格 -->

    <meta-data

        android:name="XG_V2_ACCESS_ID"

        android:value="YOUR_ACCESS_ID" />

    <!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 -->

    <meta-data

        android:name="XG_V2_ACCESS_KEY"

        android:value="YOUR_ACCESS_KEY" />

还要改一下这里:

<!-- 【必须】 通知service,此选项有助于提高抵达率 -->

    <service

        android:name="com.tencent.android.tpush.rpc.XGRemoteService"

        android:exported="true" >

        <intent-filter>

            <action android:name="应用包名.PUSH_ACTION" />

        </intent-filter>

    </service>

 

和这里:

<!-- 【必须】 (2.30及以上版新增)展示通知的activity -->

    <!-- 【注意】 如果被打开的activity是启动模式为SingleTop,SingleTask或SingleInstance,请根据通知的异常自查列表第8点处理-->

     <activity

         android:name="com.tencent.android.tpush.XGPushActivity"

         android:exported="false" >

         <intent-filter>

            <!-- 若使用AndroidStudio,请设置android:name="android.intent.action"-->

             <action android:name="" />

         </intent-filter>

    </activity>

第三步:注册App

完成工程配置后,打开工程的主Activity,在其onCreate(Bundle savedInstanceState)重载方法内,添加以下代码,完成信鸽服务的启动与APP注册过程。

// 开启logcat输出,方便debug,发布时请关闭
// XGPushConfig.enableDebug(this, true);
// 如果需要知道注册是否成功,请使用registerPush(getApplicationContext(), XGIOperateCallback)带callback版本
// 如果需要绑定账号,请使用registerPush(getApplicationContext(),account)版本
// 具体可参考详细的开发指南
// 传递的参数为ApplicationContext
Context context = getApplicationContext();
XGPushManager.registerPush(context);    
 
// 2.36(不包括)之前的版本需要调用以下2行代码
Intent service = new Intent(context, XGPushService.class);
context.startService(service);
 
 
// 其它常用的API:
// 绑定账号(别名)注册:registerPush(context,account)或registerPush(context,account, XGIOperateCallback),其中account为APP账号,可以为任意字符串(qq、openid或任意第三方),业务方一定要注意终端与后台保持一致。
// 取消绑定账号(别名):registerPush(context,"*"),即account="*"为取消绑定,解绑后,该针对该账号的推送将失效
// 反注册(不再接收消息):unregisterPush(context)
// 设置标签:setTag(context, tagName)
// 删除标签:deleteTag(context, tagName)

代码嵌入完成后,启动APP,如果在logcat中的TPush标签看到以下类似的输出,说明已经注册成功,并返回token。

注意:

Android Token长度为40位

iOS Token长度为64位

在这里,可以在logcat中直接搜索『Token』字段查找出来,如果能找到,就代表android端已成功配置信鸽!

接下来启动app,在信鸽的管理后台发个推送试一试吧~

目前测试结果:分别在红米1S和tcl两部手机上测试,只要App处于运行中,后后台运行,就可接受到推送。但是一旦用活动管理器强制终止App的活动线程,就不能接收到推送了。官方的解释是:

service被终止后,由系统、安全软件和用户操作限定是否能够再次启动。

信鸽SDK通过唯一的service与信鸽后台保持通讯,在android中,service被杀死后在没有被系统/安全软件禁止的条件下是能够自启动的,具体可自行网上搜索“android service onstartcommand START_STICKY”

目前,在某些定制的系统(如MIUI)或被安全软件禁止自启动后,只有用户再次打开APP才能重启信鸽service

信鸽service何时能够启动由系统调度确定

在锁屏触屏、网络切换、安装APP、系统重启等条件,信鸽会主动尝试启动service。

二、分类推送

如何区分目标人群,做分类推送?To be continue ...

 

 

转载于:https://my.oschina.net/JiangTun/blog/707776

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值