MobPush Android 常见问题
配置了默认点击跳转界面,对所有通道都有效吗
只对 MobPush、魅族、小米、华为、OPPO、VIVO 通道有效,对 FCM 通道无效。
如何获取回调参数
进程存活的情况下,可在我们的回调监听中看到通知详情,可以根据回调参数进行处理。 详情请查看 API 接口->推送监听接口。
进程被杀情况下,回调监听不可用,但点击通知后拉起应用的启动页面,会触发启动 Activity 的 onCreate 或 onNewIntent,通过 getIntent 拿到回传的 Intent,可以拿到通知详情。
注:PushSDK 提供了解析方法来获取回调参数,但厂商通知主要是获取附加字段,不会把所有信息都解析出来。 跳转首页获取参数
返回说明
2.2 scheme 跳转获取参数,详情请查看 API 接口->scheme 跳转
返回说明
3.如不使用 PushSDK 提供的解析方法,可参考以下方法获取回调参数
OPPO 推送时按全部人群进行推送,为什么有的 OPPO 设备接收不到
因为 OPPO 推送对应全部人群这种全量推送是有个时间限制规则的,当全量推送时当天新注册的 OPPO 设备是不生效的,第二天才生效,被全量推送计算在目标设备组中,T+1 规则。 而对应单一 OPPO 设备推送时,没有 T+1 规则限制,注册成功即立即生效。
厂商推送打开通知都会有回调吗
不是都有回调,OPPO 推送没有接收通知和打开通知的回调;FCM 推送在应用处于后台时或者应用进程被杀掉时没有接收通知和打开通知的回调。
应用在前台时,MobPush 通道推送接收不到
应用在前台时,MobPush 通道推送接收不到,请按照以下步骤检查:
检查手机网络是否正常
检查手机通知权限是否打开
是否在通知栏不重要的通知里
检查应用配置是否正确
调用 MobPush.setClickNotificationToLaunchMainActivity(),设置为 false,点击通知不启动主页,为什么设置后,没有起作用
此方法不是对所有通道都起作用,目前只对 MobPush 通道、魅族通道、小米通道起作用,对于华为通道、OPPO 通道、FCM 通道来说,由于各个厂商不同实现的原因,是否调用此方式都不影响这三个通道,默认都是启动主页。
OPPO 和 VIVO 设备通知权限开关问题
OPPO:在未接入 OPPO PUSH 前,应用的通知栏权限是默认关闭状态; 接入 OPPO PUSH 后,ColorOS3.1 至 5.0 版本的 OPPO 手机,用户激活了相关应用后,通知栏权限会默认打开。特别说明,若用户在使用旧版本应用(未集成 OPPO PUSH),手动将应用的通知栏权限进行了关闭,则只有用户手动卸载旧版本应用,再安装新版本(集成 OPPO PUSH)并激活,通知栏才会默认打开。采用覆盖安装的方式,通知栏权限不会默认开启; ColorOS5.1 及以后的版本的手机,通知栏权限由系统统一关闭,需用户手动打开。VIVO: 集成 VPUSH,通知权限总开关基本默认打开,但下方类别开关默认关闭,需要用户手动打开。
小米手机接收不到推送
如果未在小米商店发布的移动应用(APP),小米推送团队将有权不再提供推送服务。小米应用商店对开发者应用定期安全审核的结果,调整该应用的推送权限,如开发者应用未能通过小米应用商店定期安全审核,小米有权单方解除协议,或立即关闭该应用的推送权限,直至该应用通过小米应用商店的安全审核并在小米应用商店发布。详情可参考:https://dev.mi.com/console/doc/detail?pId=2634如果小米手机接收不到推送,请先检查通知权限是否开启,同时小米设备从 MIUI9 开始通知栏使用不重要通知过滤,检查通知栏里不重要通知里是否有对应应用的通知。
应用通知权限未打开状态,打开后推送接收不到
一开始应用通知权限未打开,等进行通知权限打开时,请杀掉进程,重新启动 APP 然后重新推送。
接收回调和点击通知回调一定会被调用吗
不一定。分推送通道,不同厂商,有不同的实现方式,导致有的都回调,有的只会回调点击通知,有的都没有回调。MobPush 通道,接收回调和点击通知回调都会被调用;华为厂商通道,厂商推送只提供了点击通知回调;小米厂商通道,接收回调和点击通知回调都会被调用;魅族厂商通道,接收回调和点击通知回调都会被调用;OPPO 厂商通道,两种回调都没有;FCM 通道,应用在前台时接收回调和点击通知回调都会被调用,应用在后台或者应用进程被杀掉未启动时两种回调都没有;VIVO 厂商通道,厂商推送只提供了点击通知回调。
设置标签成功后,进行通过标签推送,接收不到推送
设置标签成功后,个别厂商同步拉取数据需要时间,导致接口设置标签成功,但是推送时设备没有同步,没有目标设备,故推送接收不到。建议设备标签成功后,等待几分钟之后再进行推送。
一台设备能设置几个别名?不同的设备能设置相同的别名吗?
同一个 APP,一台设备只能对应一个别名,新设置的会覆盖掉之前设置的别名。不同的设备不能同时设置相同的别名,最后设置的设备生效,其他设备的别名都将失效。
如果应用在 Android 9 的设备上获取不到注册 ID 即(regId)
如果在其他版本的 Android 手机可以获取到注册 ID,而在 Android 9 的设备上获取不到时,请确认下 targetSdkVersion 是大于 27; 大于 27 时需在 AndroidManifest.xml 文件的中 application 标签中添加 android:usesCleartextTraffic="true"
如果推送配置了 FCM 厂商,同时需要使用 Firebase 的其他产品(ads 等产品)时,编译时报错了,怎么办
1.单独配置 ads 和 FCM 时,他们所依赖的相同的库版本是否一致,如果不一致,需要进行版本统一;2.进行版本统一:
配置 vivo 厂商推送的 appId 和 AppKey 时,需要把“-”去掉吗
不需要
接入 vivo 厂商推送,发送推送成功,vivo 设备未接收到推送
1.检查配置是否正确,包名是否和申请 vivo 推送服务时的包名一致;2.手机通知权限是否打开;3.检查消息是否已经送达但是折叠到了消息盒子里面?目前的策略是应用存活时展示,不存活时折叠;4.检查设备联网是否有问题,如果连接的 wifi 设置了代理,一般需要重启手机,可以切换手机网络重试;
如果配置了厂商推送的信息,但是运行打包发现 AppKey 不完整,确实第一个数字时,怎么办
这是 gradle 版本太高导致的,请在配置有问题的地方加入一个空格。
配置了华为厂商推送,为什么有的华为设备无法接收离线消息
首先,排查配置的华为厂商参数是否正确; 其次,检查华为设备 EMUI 版本,低于 5.0 可能不支持,如果低于 5.0,可以尝试升级设备里的‘华为移动服务’应用,升级‘华为移动服务’可能会支持华为厂商推送。
MobPush 的厂商推送和应用使用的其他第三方产品中的厂商推送冲突了,如何解决
首页,在 build.gradle 的 MobPush{}配置中照常配置厂商信息; 然后,在 build.gradle 文件最后添加:
哪个厂商冲突,exclude 哪个厂商就可以。
如果应用使用的其他第三方产品中的魅族厂商推送和 MobPush 的魅族厂商推送冲突了,推送时其中一个不起作用
由于魅族厂商推送对接收监听回调只取 AndroidManifest.xml 中配置的第一个 Reciever,所以谁在前面配置哪个产品就生效,后面配置多少个魅族厂商推送回调监听都无效。 解决方法: 自定义一个 Receiver,继承自 MzPushMessageReceiver,重新里面所有的方法,然后这个自定义的 Receiver 里调用 MobPush 的魅族回调和第三方产品的魅族回调;然后再 AndroidManifest.xml 文件中进行配置:
在自定义的 Receiver 里实现示例:
配置了魅族厂商推送,客户端 debug log 输出注册成功,推送时接收不到推送或者离线推送接收不到,如何解决 1.确认下魅族厂商推送接入的是 flyme 推送,而不是 ups 推送。2.确认下魅族开发者平台创建的应用是否配置了回执,如果没有配置,请配置上哦,这个会影响推送结果,导致推送不成功。3.如果上面都确认正常,仍存在问题请联系 MobTech 技术支持进行排查解决。
同一个推送监听回调被调用了多次,为什么
如果应用有多个子进程,同时推送监听回调是在 Application 的 onCreate 方法中添加,那么存在几个子进程 Application 的 onCreate 会调用几次,监听回调也会被添加几次,所以会出现同一个推送监听回调被调用多次的情况。 如果想要只监听回调主进程,那么再添加时需判断下当前进程,为主进程时再添加推送监听回调。
支持角标功能吗
MobPush 是支持角标功能的。需调用 MobPush.setShowBadge(true);打开角标功能,默认 false,角标功能关闭。对于厂商通道来说,小米系统本身就支持角标功能,不需要做任何处理;魅族厂商不支持角标功能;OPPO 和 VIVO 厂商目前只对自家应用和微信 QQ 开放角标功能;华为厂商对 EMUI 8.0 及以上支持角标功能,如果需要对华为厂商打开角标功能,在服务端推送时在 extrasMapList 参数里面新增 androidBadgeClass 参数,其参数值是应用入口 Activity 的全路径,这样 EMUI8.0 及以上走华为厂商推送的设备就可以显示角标了。
MobPush 支持多包名吗
支持。
一台设备应用能设置多个标签吗?相同应用不同的设备能设置相同的标签吗
同一个 APP,一台设备可以订阅多个标签,标签请尽量使用英文避免使用中文或特殊字符,导致厂商订阅标签失败而推送不成功;不同的设备可以同时设置同一标签。
MobPush 的 RegistrationId 会发生变化吗?如果发送变化是在什么时机下?RegistrationId 是固定长度的吗
注册 id 一般情况下不会发送变化,但也会出现发现变化的情况,有时卸载重装或者设备恢复出厂设备等情况下注册 id 会发生变化,而注册 id 的长度由于服务端内部优化后续会变化,不是固定长度的。
使用 StopPush 是否会关闭所有厂商渠道推送
除了 FCM 厂商无法关闭(没有提供相关接口),TCP 以及其他厂商都是正常关闭的。
打开通知权限后,还是无法收到
MobPush 只会在初始化的时候更新记录的通知权限状态。如初始化的时候通知权限是关闭的,需再次重启 APP,更新记录的通知权限状态。 如需要实时更新,可调用该方法:
无法统计到厂商
点击请在点击通知打开的 Activity 的 onCreate 中加上该方法
华为厂商长文本样式无效
使用华为长文本样式,标题(title)为必填项。
华为厂商解析 intent 为空
华为传递数据给应用仅在 NC 版本在在 9.11 及以上版本生效,NC 版本查看方式(设置-应用-应用管理-推送服务),老旧设备存在无推送服务或版本较低问题,可尝试升级版本解决,如无法升级,华为未给出老旧设备兼容方案。详细说明可查看:自定义点击消息动作
集成华为厂商通道上架 Google 商店被拒,应该怎么解决?
如上架 google 商店被拒文案中有“We found your app is using a non-compliant version of Huawei Mobile Services SDK which contains code to download or install applications from unknown sources outside of Google Play”字样,原因是您当前使用的华为厂商 SDK 版本过低,华为在 6.3.0.304(2022-03-31)及以上的版本修复了该问题,您可在 Gradle 脚本中主动声明该版本,示例如下。
评论