11/08/2024 16:35:55
问题描述
腾讯移动推送存在启动其他 APP 行为(链式唤醒)。
问题原因
可能存在以下两种:
场景 1:游戏每次启动均会存在启动其他 APP 行为。
原因:业务主动开启了腾讯移动推送联合保活开关,对应开关如下:
V3 版本在 assets/msdkconfig.ini 文件中存在如下配置:
XG_PULL_UP_OTHER_APP_ENABLE = true
V5 版本在 MSDKConfig.ini 文件中存在如下配置:
XG_PULL_UP_OTHER_APP_ENABLE = true
场景 2:腾讯移动推送联合保活开关配置是 false,仅在安装游戏首次启动时会出现启动其他 APP 行为,再次启动则不会出现。
原因:腾讯移动推送接口调用异步生效、出现一定延时导致。首次安装启动时,接口调用设置的标志位较晚生效于推送服务拉活操作时读取的时机。
解决方案
1 关闭腾讯移动推送联合保活能力
如果开启了腾讯移动推送联合保活能力,则需要将 XG_PULL_UP_OTHER_APP_ENABLE
设置为 false(如果 XG_PULL_UP_OTHER_APP_ENABLE
本身设置为 false,则直接按照第 2 点处理);
2 延迟腾讯移动推送 service 启动
可以参考方案 a 或方案 b 进行处理。
a 通过 AndroidManifest 配置
在 application 级别下添加 meta-data
<meta-data
android:name="XG_SERVICE_PULL_UP_OFF"
android:value="true" />
b 通过代码处理
可直接调用腾讯移动推送侧接口处理;腾讯移动推送平台文档指引:https://cloud.tencent.com/document/product/548/36674#.E5.A6.82.E4.BD.95.E5.85.B3.E9.97.AD-tpns-.E7.9A.84.E4.BF.9D.E6.B4.BB.E5.8A.9F.E8.83.BD.EF.BC.9F
备注
版本支持情况:
1、上述方案在 MSDK V3.3.132a/V5.10 中的腾讯移动推送版本开始支持;
2、如果是 MIUI 12 系统,上述方案在 MSDK V3.3.16a/V5.13 中的腾讯移动推送版本开始支持;
3、V 3.3.18/V5.16 版本开始,已经将解决方案第 2 点的 a 配置作为默认配置带出。
3 如果接入小米通道,需要去除 NetworkStatusReceiver 中关于 intent-filter 的配置
其他:
1、延迟 service 启动是在,APP 首次安装启动时,先不自动启动后台推送服务,直到用户主动调用注册接口时才启动;
2、若有以下日志打印,则表明联合保活能力已经关闭:I/TPNS: [ServiceUtil] disable pull up other app
。
3、关于腾讯移动推送自启相关说明
5.21 版本之前,腾讯移动推送存在自启问题。当前,已经将相应的配置去除,但带来的影响是,腾讯移动推送 Android 端不能自启,如果需要自启功能,请将配置恢复,恢复方法如下。
<receiver
android:name="com.tencent.android.tpush.XGPushReceiver"
android:process=":xg_vip_service">
<intent-filter android:priority="0x7fffffff">
<!-- 【必须】 腾讯移动推送SDK的内部广播 -->
<action android:name="com.tencent.android.xg.vip.action.SDK" />
<action android:name="com.tencent.android.xg.vip.action.INTERNAL_PUSH_MESSAGE" />
<action android:name="com.tencent.android.xg.vip.action.ACTION_SDK_KEEPALIVE" />
</intent-filter>
</receiver>
修改为:
<receiver
android:name="com.tencent.android.tpush.XGPushReceiver"
android:process=":xg_vip_service">
<intent-filter android:priority="0x7fffffff">
<!-- 【必须】 腾讯移动推送SDK的内部广播 -->
<action android:name="com.tencent.android.xg.vip.action.SDK" />
<action android:name="com.tencent.android.xg.vip.action.INTERNAL_PUSH_MESSAGE" />
<action android:name="com.tencent.android.xg.vip.action.ACTION_SDK_KEEPALIVE" />
<!-- 【可选】 系统广播:网络切换 -->
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<!-- 【可选】 系统广播:开屏 -->
<action android:name="android.intent.action.USER_PRESENT" />
<!-- 【可选】 一些常用的系统广播,增强腾讯移动推送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>
注意:考虑内部策略问题,不建议添加可选权限。
All rights reserved.