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>

注意:考虑内部策略问题,不建议添加可选权限。



Copyright © 2024 MSDK.
All rights reserved.

results matching ""

    No results matching ""