0%

Android 跳坑信鸽推送

不得不说信鸽推送真是坑超多,尤其官方文档跟没讲一样,心累整理详细流程(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
    14
    Context context = getApplicationContext();
    XGPushConfig.enableDebug(this,true);
    XGPushConfig.getToken(this);
    //为了方便获取注册是否成功的状态,使用带callback的版本
    XGPushManager.registerPush(context,"users",newXGIOperateCallback() {
    @Override
    public void onSuccess (Object data,int i){
    Log.d("TPush", "注册成功,设备token为:" + data);
    }
    @Override
    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
2
3
4
sourceSets {
main{
jniLibs.srcDirs=['libs']}
}
  • 编译时候出现无法找到so文件

    • 第一是需要添加多个平台的so文件,只按照官方文档添加一个armeabi是肯定行不通的,因为每个品牌的手机需要的so文件是不一样的,如果做测试肯定需要每个平台的so文件来适配主流手机

      拿我自己来说魅族手机需要添加armeabi,armeabi-v7,arm64-v8a
      但小米就只需要添加armeabi,armeabi-v7

    • 第二如果工程之前就添加了某些平台的so文件(比如andfix),则需要把所有的so文件分平台「合并」否则也会找不到so文件
  • logcat显示XGRemotService无法认证显示

    这说明自己工程的id和推上信鸽的应用包名不一致,也就是信鸽显示的应用包名错误,需要重新提交应用保持一致