不得不说信鸽推送真是坑超多,尤其官方文档跟没讲一样,心累整理详细流程(SDK 2.46)
配置和注册
基本流程按照官方文档来,代码直接copy就可以了,不过需要注意几点.
使用AS要根据提示设置android:name=android.intent.action
1
2
3
4
5
6
7
8<activity
android:name="com.tencent.android.tpush.XGPushActivity"
android:exported="true">
<intent-filter>
<!-- 若使用AndroidStudio,请设置android:name="android.intent.action"-->
<action android:name="android.intent.action"/>
</intent-filter>
</activity>- 正确配置XGRemoteService,且intent-filter中是否正确设置
1
<action android:name="应用包名.PUSH_ACTION" /> 应用包名为当前APP包名
- 完成配置后,在工程的主activity(一般都是mainactivity)onCreate重载方法里添加如下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14Context context = getApplicationContext();
XGPushConfig.enableDebug(this,true);
XGPushConfig.getToken(this);
//为了方便获取注册是否成功的状态,使用带callback的版本
XGPushManager.registerPush(context,"users",newXGIOperateCallback() {
public void onSuccess (Object data,int i){
Log.d("TPush", "注册成功,设备token为:" + data);
}
public void onFail (Object data,int errCode, String msg){
Log.d("TPush", "注册失败,错误码:" + errCode + ",错误信息:" + msg);
}
});
正确输入自己的ACCESS ID和ACCESS KEY
1
2
3
4
5
6
7
8<!-- 【必须】 请将YOUR_ACCESS_ID修改为APP的AccessId,“21”开头的10位数字,中间没空格 -->
<meta-data
android:name="XG_V2_ACCESS_ID"
android:value="21********"/>
<!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 -->
<meta-data
android:name="XG_V2_ACCESS_KEY"
android:value="A***********"/>
跳坑(带泪的亲历)
如果觉得这么简单就完了,那真是too young too simple了,坑得一步步跳
- 按照指示将下载下来的libs中的so和jar集成到AS上的libs中去,其中V4包直接删掉因为没有谁不带support库的,然后要在build.gradle添加如下代码
1 | sourceSets { |
编译时候出现无法找到so文件
第一是需要添加多个平台的so文件,只按照官方文档添加一个armeabi是肯定行不通的,因为每个品牌的手机需要的so文件是不一样的,如果做测试肯定需要每个平台的so文件来适配主流手机
拿我自己来说魅族手机需要添加armeabi,armeabi-v7,arm64-v8a
但小米就只需要添加armeabi,armeabi-v7- 第二如果工程之前就添加了某些平台的so文件(比如andfix),则需要把所有的so文件分平台「合并」否则也会找不到so文件
logcat显示XGRemotService无法认证显示
这说明自己工程的id和推上信鸽的应用包名不一致,也就是信鸽显示的应用包名错误,需要重新提交应用保持一致