Android 迁移指南
为保障迁移后的正常使用,请您升级至 Android V1.1.5.4 及以上版本,以下是针对从信鸽免费版本 4.x 版本迁移到腾讯云 Android V1.1.5.4 及以上版本的变更说明。
自动集成方式
依赖变更
在【app build.gradle】>【dependencies】下,请将以下信鸽 4.x 版本依赖做相应变更。
变更前:
implementation 'com.tencent.xinge:xinge:4.3.5-release'
implementation 'com.tencent.wup:wup:1.0.0.E-Release'
implementation 'com.tencent.mid:mid:4.0.7-Release'
变更后:
// TPNS 推送 [VERSION] 为当前SDK版本号,版本号可在SDK下载页查看
implementation 'com.tencent.tpns:tpns:[VERSION]-release'
组件变更
若监听消息自行继承过 XGBaseReceiver 接口类,请在 AndroidManifest 文件下,将该自定义组件注册内容做相应变更。
变更前:
<receiver android:name="完整包名.MessageReceiver"
android:exported="true" >
<intent-filter>
<!-- 接收消息透传 -->
<action android:name="com.tencent.android.tpush.action.PUSH_MESSAGE" />
<!-- 监听注册、反注册、设置/删除标签、通知被点击等处理结果 -->
<action android:name="com.tencent.android.tpush.action.FEEDBACK" />
</intent-filter>
</receiver>
变更后:
<receiver android:name="完整包名.MessageReceiver">
<intent-filter>
<!-- 接收消息透传 -->
<action android:name="com.tencent.android.xg.vip.action.PUSH_MESSAGE" />
<!-- 监听注册、反注册、设置/删除标签、通知被点击等处理结果 -->
<action android:name="com.tencent.android.xg.vip.action.FEEDBACK" />
</intent-filter>
</receiver>
手动集成方式
依赖包变更
删除信鸽 4.x 版本所使用的全部 .jar 文件,使用 libs 目录下的所有 .jar 文件替换。
删除信鸽 4.x 版本所使用的全部 .so 文件,在 Other-Platform-SO 目录下,按照当前 .so 支持的平台添加 .so 文件。
AndroidManifest 文件变更
在 Android 配置文件 AndroidManifest.xml 中,删除所有信鸽 4.x 版本使用组件和权限,删除内容具体如下:
<application> <!-- 【必须】 信鸽receiver广播接收 --> <receiver android:name="com.tencent.android.tpush.XGPushReceiver" android:process=":xg_service_v4" > <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> <!-- 【可选】APP实现的Receiver,用于接收消息透传和操作结果的回调,请根据需要添加 --> <!-- YOUR_PACKAGE_PATH.CustomPushReceiver需要改为自己的Receiver: --> <receiver android:name="com.qq.xgdemo.receiver.MessageReceiver" android:exported="true" > <intent-filter> <!-- 接收消息透传 --> <action android:name="com.tencent.android.tpush.action.PUSH_MESSAGE" /> <!-- 监听注册、反注册、设置/删除标签、通知被点击等处理结果 --> <action android:name="com.tencent.android.tpush.action.FEEDBACK" /> </intent-filter> </receiver> <!-- 【注意】 如果被打开的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.XGPushServiceV4" android:exported="true" android:persistent="true" android:process=":xg_service_v4" /> <!-- 云控相关 --> <receiver android:name="com.tencent.android.tpush.cloudctr.network.CloudControlDownloadReceiver"> <intent-filter> <action android:name="com.tencent.android.xg.vip.action.cloudcontrol.action.DOWNLOAD_FILE_FINISH" /> </intent-filter> </receiver> <service android:name="com.tencent.android.tpush.cloudctr.network.CloudControlDownloadService" /> <!-- 【必须】 提高service的存活率 --> <service android:name="com.tencent.android.tpush.rpc.XGRemoteService" android:exported="true"> <intent-filter> <!-- 【必须】 请修改为当前APP包名 .PUSH_ACTION, 如demo的包名为:com.qq.xgdemo --> <action android:name="当前应用的包名.PUSH_ACTION" /> </intent-filter> </service> <!-- 【必须】 【注意】authorities修改为 包名.AUTH_XGPUSH, 如demo的包名为:com.qq.xgdemo--> <provider android:name="com.tencent.android.tpush.XGPushProvider" android:authorities="当前应用的包名.AUTH_XGPUSH" android:exported="true"/> <!-- 【必须】 【注意】authorities修改为 包名.TPUSH_PROVIDER, 如demo的包名为:com.qq.xgdemo--> <provider android:name="com.tencent.android.tpush.SettingsContentProvider" android:authorities="当前应用的包名.TPUSH_PROVIDER" android:exported="false" /> <!-- 【必须】 【注意】authorities修改为 包名.TENCENT.MID.V4, 如demo的包名为:com.qq.xgdemo--> <provider android:name="com.tencent.mid.api.MidProvider" android:authorities="当前应用的包名.TENCENT.MID.V4" android:exported="true" > </provider> <!-- 【必须】 请将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.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" /> <!-- 【常用】 信鸽SDK所需权限 --> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 【可选】 信鸽SDK所需权限 --> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <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.BLUETOOTH" /> <uses-permission android:name="android.permission.BATTERY_STATS" />
注销免费版本推送服务
如果 App 的推送服务是从免费集群迁移到付费集群,在两个集群同时推送,可能会出现重复消息。如需要在免费版本和 TPNS 版本都做推送,则 TPNS 版本需要增加以下配置:
在 AndroidManifest 上添加的 application 节点内添加以下配置,填写免费版本的 accessId
<meta-data android:name="XG_OLD_ACCESS_ID" android:value="免费版本应用的accessid" />
接口变更
与 4.x 对比,部分 API 接口做了以下变更。
删除带账号注册的 API,设置账号只能通过 bindAccount 或 appendAccount 来设置。
// 删除以下API XGPushManager.registerPush(Context context, String account) XGPushManager.registerPush(Context context, String account, final XGIOperateCallback callback) XGPushManager.registerPush(Context context, String account,String url, String payload, String otherToken, final XGIOperateCallback callback)
账号绑定和注册推送功能分开,bindAccount 和 appendAccount 不再带有注册功能,推荐在 registerPush 成功的回调里,调用 bindAccount 或 appendAccount。
继承 XGPushBaseReceiver 时需要多实现以下两个函数。
/** * 设置帐号结果处理函数 */ public abstract void onSetAccountResult(Context context, int errorCode, String operateName); /** * 删除帐号结果处理函数 */ public abstract void onDeleteAccountResult(Context context, int errorCode, String operateName);
继承 XGPushBaseReceiver 的实现类,在 AndroidManifest 文件配置时,前缀命名规则为 com.tencent.android.xg.vip.action.,区别于 4.x 版本的 com.tencent.android.tpush.action.。
TPNS 版本正确配置:
<receiver android:name="com.tencent.android.xg.cloud.demo.MessageReceiver"> <intent-filter> <!-- 接收消息透传 --> <action android:name="com.tencent.android.xg.vip.action.PUSH_MESSAGE" /> <!-- 监听注册、反注册、设置/删除标签、通知被点击等处理结果 --> <action android:name="com.tencent.android.xg.vip.action.FEEDBACK" /> </intent-filter> </receiver>
厂商通道集成变更
厂商通道变更只需做以下变更:
删除 gradle 依赖(自动集成)
// 删除以下对应的厂商依赖 implementation 'com.tencent.xinge:mipush:4.3.2-xiaomi-release' implementation 'com.tencent.xinge:xgmz:4.3.2-meizu-release' implementation 'com.tencent.xinge:xghw:4.3.2-huawei-release' // fcm implementation 'com.tencent.xinge:fcm:4.3.2-release' implementation 'com.google.firebase:firebase-messaging:17.3.1'
替换为以下对应的厂商依赖,[VERSION] 为当前 SDK 版本号,版本号可在 SDK 下载页查看。
implementation 'com.tencent.tpns:xiaomi:[VERSION]-release' implementation 'com.tencent.tpns:meizu:[VERSION]-release' implementation 'com.tencent.tpns:huawei:[VERSION]-release' //fcm implementation 'com.tencent.tpns:fcm:[VERSION]-release' implementation 'com.google.firebase:firebase-messaging:17.6.0'
手动集成的方式需要替换 .jar 文件
代码混淆保留变更
如果您的项目中使用 proguard 等工具做了代码混淆,请将以下混淆保留选项:
变更前:
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep class com.tencent.android.tpush.** {*;}
-keep class com.tencent.mid.** {*;}
-keep class com.qq.taf.jce.** {*;}
-keep class com.tencent.bigdata.** {*;}
变更后:
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep class com.tencent.android.tpush.** {*;}
-keep class com.tencent.bigdata.baseapi.** {*;}
-keep class com.tencent.bigdata.mqttchannel.** {*;}
-keep class com.tencent.tpns.dataacquisition.** {*;}
Last updated
Was this helpful?