写点什么

MobTech MobPush|不同手机厂商推送问题

  • 2023-04-13
    上海
  • 本文字数:3606 字

    阅读完需:约 12 分钟

配置了华为厂商推送,为什么有的华为设备无法接收离线消息

首先,排查配置的华为厂商参数是否正确; 其次,检查华为设备 EMUI 版本,低于 5.0 可能不支持,如果低于 5.0,可以尝试升级设备里的‘华为移动服务’应用,升级‘华为移动服务’可能会支持华为厂商推送。

华为厂商长文本样式无效

使用华为长文本样式,标题(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 脚本中主动声明该版本,示例如下。


OPPO 推送时按全部人群进行推送,为什么有的 OPPO 设备接收不到

因为 OPPO 推送对应全部人群这种全量推送是有个时间限制规则的,当全量推送时当天新注册的 OPPO 设备是不生效的,第二天才生效,被全量推送计算在目标设备组中,T+1 规则。 而对应单一 OPPO 设备推送时,没有 T+1 规则限制,注册成功即立即生效。

OPPO 和 VIVO 设备通知权限开关问题

OPPO:


在未接入 OPPO PUSH 前,应用的通知栏权限是默认关闭状态; 接入 OPPO PUSH 后,ColorOS3.1 至 5.0 版本的 OPPO 手机,用户激活了相关应用后,通知栏权限会默认打开。特别说明,若用户在使用旧版本应用(未集成 OPPO PUSH),手动将应用的通知栏权限进行了关闭,则只有用户手动卸载旧版本应用,再安装新版本(集成 OPPO PUSH)并激活,通知栏才会默认打开。采用覆盖安装的方式,通知栏权限不会默认开启; ColorOS5.1 及以后的版本的手机,通知栏权限由系统统一关闭,需用户手动打开。


VIVO: 集成 VPUSH,通知权限总开关基本默认打开,但下方类别开关默认关闭,需要用户手动打开。

配置 vivo 厂商推送的 appId 和 AppKey 时,需要把“-”去掉吗

不需要

接入 vivo 厂商推送,发送推送成功,vivo 设备未接收到推送

  1. 检查配置是否正确,包名是否和申请 vivo 推送服务时的包名一致;

  2. 手机通知权限是否打开;

  3. 检查消息是否已经送达但是折叠到了消息盒子里面?目前的策略是应用存活时展示,不存活时折叠;

  4. 检查设备联网是否有问题,如果连接的 wifi 设置了代理,一般需要重启手机,可以切换手机网络重试;

小米手机接收不到推送

如果未在小米商店发布的移动应用(APP),小米推送团队将有权不再提供推送服务。小米应用商店对开发者应用定期安全审核的结果,调整该应用的推送权限,如开发者应用未能通过小米应用商店定期安全审核,小米有权单方解除协议,或立即关闭该应用的推送权限,直至该应用通过小米应用商店的安全审核并在小米应用商店发布。详情可参考:dev.mi.com/console/doc…


如果小米手机接收不到推送,请先检查通知权限是否开启,同时小米设备从 MIUI9 开始通知栏使用不重要通知过滤,检查通知栏里不重要通知里是否有对应应用的通知。

如果应用使用的其他第三方产品中的魅族厂商推送和 MobPush 的魅族厂商推送冲突了,推送时其中一个不起作用

由于魅族厂商推送对接收监听回调只取 AndroidManifest.xml 中配置的第一个 Reciever,所以谁在前面配置哪个产品就生效,后面配置多少个魅族厂商推送回调监听都无效。 解决方法: 自定义一个 Receiver,继承自 MzPushMessageReceiver,重新里面所有的方法,然后这个自定义的 Receiver 里调用 MobPush 的魅族回调和第三方产品的魅族回调;然后再 AndroidManifest.xml 文件中进行配置:


<receiver                android:name="自定义Receiver">                <intent-filter>                        <action                                android:name="com.meizu.flyme.push.intent.MESSAGE" />                        <action                              android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />                        <action                                android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" />                        <action                                android:name="com.meizu.c2dm.intent.REGISTRATION" />                        <action                                android:name="com.meizu.c2dm.intent.RECEIVE" />                        <category                                android:name="包名" />                </intent-filter>        </receiver>复制代码
复制代码


在自定义的 Receiver 里实现示例:


public class MyReceiver extends MzPushMessageReceiver {         private OtherReceiver otherReceiver;         private PushMeiZuRevicer mobpushMeiZuReceiver;         public MyReceiver() {                otherReceiver = new OtherReceiver();                mobpushMeiZuReceiver = new PushMeiZuRevicer();         }         @Override         public void onPushStatus(Context context, PushSwitchStatus pushSwitchStatus) {                otherReceiver.onPushStatus(context, pushSwitchStatus);                mobpushMeiZuReceiver.onPushStatus(context, pushSwitchStatus);         }         @Override         public void onRegisterStatus(Context context, RegisterStatus registerStatus) {                otherReceiver.onRegisterStatus(context, registerStatus);                mobpushMeiZuReceiver.onRegisterStatus(context, registerStatus);         }         @Override         public void onRegister(Context context, String s) {                otherReceiver.onRegister(context, s);                mobpushMeiZuReceiver.onRegister(context, s);         }         @Override         public void onUnRegister(Context context, boolean b) {                otherReceiver.onUnRegister(context, b);                mobpushMeiZuReceiver.onUnRegister(context, b);         }         @Override         public void onUnRegisterStatus(Context context, UnRegisterStatus unRegisterStatus) {                otherReceiver.onUnRegisterStatus(context, unRegisterStatus);                mobpushMeiZuReceiver.onUnRegisterStatus(context, unRegisterStatus);         }         @Override         public void onSubTagsStatus(Context context, SubTagsStatus subTagsStatus) {                otherReceiver.onSubTagsStatus(context, subTagsStatus);                mobpushMeiZuReceiver.onSubTagsStatus(context, subTagsStatus);         }         @Override         public void onSubAliasStatus(Context context, SubAliasStatus subAliasStatus) {                otherReceiver.onSubAliasStatus(context, subAliasStatus);                mobpushMeiZuReceiver.onSubAliasStatus(context, subAliasStatus);         }         @Override         public void onNotificationClicked(Context context, MzPushMessage mzPushMessage) {                otherReceiver.onNotificationClicked(context, mzPushMessage);                mobpushMeiZuReceiver.onNotificationClicked(context, mzPushMessage);         }         @Override         public void onNotificationArrived(Context context, MzPushMessage mzPushMessage) {                otherReceiver.onNotificationArrived(context, mzPushMessage);                mobpushMeiZuReceiver.onNotificationArrived(context, mzPushMessage);         }
@Override public void onNotifyMessageArrived(Context context, String s) { otherReceiver.onNotifyMessageArrived(context, s); mobpushMeiZuReceiver.onNotifyMessageArrived(context, s); } }复制代码
复制代码

配置了魅族厂商推送,客户端 debug log 输出注册成功,推送时接收不到推送或者离线推送接收不到,如何解决

  1. 确认下魅族厂商推送接入的是 flyme 推送,而不是 ups 推送。

  2. 确认下魅族开发者平台创建的应用是否配置了回执,如果没有配置,请配置上哦~,这个会影响推送结果,导致推送不成功。

  3. 如果上面都确认正常,仍存在问题请联系 MobTech 技术支持进行排查解决。

用户头像

还未添加个人签名 2019-05-08 加入

还未添加个人简介

评论

发布
暂无评论
MobTech MobPush|不同手机厂商推送问题_MobTech袤博科技_InfoQ写作社区