1.移动推送SDK 在代码位置 TPushAlarmManager.set 处使用了一个隐式 PendingIntent,用于触发 SDK 内部心跳。
您可以参见 Google 隐式 PendingIntent 处理帮助文档 提出的针对建议,移动推送SDK 已进行如下自查:
a. 使用的 setAction 为 SDK 自声明的静态广播 action,无对外暴露风险;
b. 涉及 PendingIntent 的打开目标为 SDK 内部静态广播,且已添加 SDK 内部自声明的广播权限,属于可信任组件。
综合考虑,移动推送此处当前使用的 PendingIntent 为可信任安全 PendingIntent,且 Google 提示的此项内容不会影响您的应用上架。当前您可以忽视此项提示,继续上架您的应用。
使用自定义铃声可以通过创建通知渠道实现:
n_ch_id
进行推送,厂商通道需指定厂商渠道 ID,如华为通道需指定hw_ch_id
,小米通道需指定xm_ch_id
。说明:
如需关闭联合保活功能,请在应用初始化的时候,例如 Application 或 LauncherActivity 的 onCreate 中调用如下接口,并传递 false 值:
注意:仅 1.1.6.0 之后版本支持关闭联合保活功能,1.1.6.0之前版本移动推送默认开启联合保活能力,且不可关闭。
XGPushConfig.enablePullUpOtherApp(Context context, boolean pullUp);
若您使用 gradle 自动集成方式,请在自身应用的 AndroidManifest.xml 文件 <application> 标签下配置如下结点,其中 xxx
为任意自定义名称;如果使用手动集成方式,请修改如下节点属性:
<!-- 在自身应用的AndroidManifest.xml文件中添加如下结点,其中 xxx 为任意自定义名称: -->
<!-- 关闭与 TPNS 应用的联合保活功能,请配置 -->
<provider
android:name="com.tencent.android.tpush.XGPushProvider"
tools:replace="android:authorities"
android:authorities="应用包名.xxx.XGVIP_PUSH_AUTH"
android:exported="false" />
若控制台有以下日志打印,则表明联合保活功能已经关闭:I/TPush: [ServiceUtil] disable pull up other app
。
针对“用户同意隐私服务协议” 场景,开发者可以在 AndroidManifest.xml 文件添加以下节点,应用首次安装启动时即不会自启推送服务,直到调用了推送服务注册接口XGPushManager.registerPush()
才会开启:
<meta-data
android:name="XG_SERVICE_PULL_UP_OFF"
android:value="true" />
鸿蒙系统完全兼容 Android SDK,推送功能可正常使用。
厂商 | 是否需要上架应用市场 |
---|---|
小米 | 是,且需要企业开发者账号可 开通小米平台推送服务 |
魅族 | 否,个人开发者账号即可 开通魅族平台推送服务 |
FCM | 否,个人开发者账号即可开通 FCM 推送服务 |
华为 | 否,个人开发者账号即可 开通华为平台推送服务 |
OPPO | 是,且需要企业开发者账号可 开通 OPPO 平台推送服务 |
vivo | 是 ,且需要企业开发者账号可 开通 vivo 平台推送服务 |
开发者在集成 vivo 厂商通道推送服务后,部分安全检测工具可能会提示 “APP 包含未使用的权限字符串”,详情如下:
问题来源:vivo 厂商通道推送 SDK 版本名 2.3.4。
涉及类文件:com.vivo.push.util.z 涉及敏感权限字符串:android.permission.GET_ACCOUNTS。
注意:经检查发现最新的 vivo 厂商通道推送 SDK 版本名 3.0.0.3 中同样包含此问题。
问题代码来源为 vivo 厂商通道推送 SDK,移动推送项目组无法变更其内容;此问题已向 vivo 推送服务相关人员反馈,表示相关静态字段为 SDK 遗留代码,并无实际使用,会尽快排期修复。 当前可参考的快速解决办法如下:
请参见 排查工具指南 使用排查工具进行自动化排查,一般有如下错误:
不支持2015年后发布的努比亚机型,因为努比亚新的系统版本增加了超级省电的功能(会迅速将后台进程停止),移动推送 Service 无法启动,所以努比亚机型无法注册成功。
自移动推送SDK 1.1.6.3 版本起,为避免在非本品牌手机上、其他品牌的推送服务在后台自启、传输用户数据,会在非本品牌手机上禁用其他品牌的推送服务组件。
华为在账号、游戏、推送等不同功能上有一些公共组件,移动推送禁用推送组件可能会导致其它服务功能在非华为品牌手机上同样不能启动;若您需要关闭此禁用功能,可配置以下内容:
在 AndroidManifest.xml 文件 application 标签下添加节点配置,并重装应用(需卸载后重装)。
<meta-data
android:name="tpns-disable-component-huawei-v2"
android:value="false" />
<meta-data
android:name="tpns-disable-component-huawei-v4"
android:value="false" />
当订阅者点击您的通知时,可以根据您的配置跳转至指定的应用内页面、H5、Deeplink 等,来满足您在不同场景下的需求。详情请参见 通知点击跳转。
回调 | 抵达回调 | 点击回调 |
---|---|---|
小米 | 不支持 | 支持 |
魅族 | 不支持 | 支持 |
FCM | 不支持 | 支持 |
华为 | 不支持 | 支持 |
OPPO | 不支持 | 支持 |
vivo | 不支持 | 支持 |
注意:厂商通道的点击回调需 SDK 版本1.2.0.1及以上版本支持;旧版本仅支持华为、小米、魅族、vivo。
如需在厂商离线推送场景下获取推送的 title 和 content,请通过在通知点击跳转的 intent uri 上拼接一份 title 和 content 内容参数,并在通知点击后获取。详情请参见 通知点击跳转。
在应用运行日志中观察到如下类似日志:
[OtherPushClient] handleUpdateToken other push token is : other push type: huawei
表示您的应用注册该厂商通道失败,您可以通过获取厂商通道注册失败的返回码来进行问题定位和排查,详情请参见 厂商通道注册失败排查指南。
推送 API 字段设置示例如下,其中 icon_color: 123456,即为 RGB 颜色 #01e240:
{
"message": {
"android": {
"small_icon": "notification_icon",
"icon_color": 123456
}
}
}
适配后的具体效果如下,建议参考 Demo logo 图标进行作图。
说明:
以上两种情况,需要在 drawable 不同分辨率的文件夹下对应放置一张名称必须为 stat_sys_third_app_notify 的图片,详情请参考 移动推送Android SDK 中魅族厂商依赖目录的 flyme-notification-res 文件夹。
tpns-configs.json
文件中的 "debug"
字段置为 true
, 运行命令: ./gradlew --rerun-tasks :app:processReleaseManifest
并通过"TpnsPlugin"
关键字进行分析。
2. 单击【sync projects】。
3. 在项目的 External Libraries 中查看是否有相关依赖。
在 AndroidX 项目工程的 gradle.properties 文件中添加如下属性:
android.useAndroidX=trueandroid.enableJetifier=true
说明:
- android.useAndroidX=true,表示当前项目启用 AndroidX。
- android.enableJetifier=true,表示将依赖包迁移到 AndroidX。
开发者在集成各厂商通道推送服务后,部分安全检测工具可能会提示 “App 存在通过 HTTP 明文传输信息的行为” ,具体 HTTP 地址涉及:
http://new.api.ad.xiaomi.com/logNotificationAdActions,http://resolver.msg.xiaomi.net/psc/?t=a
http://norma-external-collect.meizu.com/android/exchange/getpublickey.do,http://norma-external-collect.meizu.com/push/android/external/add.do
以上 HTTP URL 均来自各厂商推送 SDK,移动推送项目组无法明确其目的或控制其行为,但正在积极与厂商服务提供者联系并推动 HTTPS 改造;开发者当前可以自行评估选择是否继续使用以上厂商提供的推送服务。
由于工程加载方法数超过65K,请对工程做分包处理。
在部分手机,通知栏跳转到某个页面可能会出现权限问题。
处理方法:在 androidManifest.xml 中,需要打开的 Activity 加上 android:exported="true"。
注册方法可以在任何地方调用,但注意要传递 ApplicationContext。
不可以,Google 服务和一个可以正常访问 Google 的网是可以使用 FCM 的必要条件。
FCM 需要国外网络,适用于境外中国香港和新加坡集群。
排查思路:
厂商通道下发失败:
自建通道下发失败:
本页内容是否解决了您的问题?