首先,排查配置的华为厂商参数是否正确; 其次,检查华为设备EMUI版本,低于5.0可能不支持,如果低于5.0,可以尝试升级设备里的‘华为移动服务’应用,升级‘华为移动服务’可能会支持华为厂商推送。
使用华为长文本样式,标题(title)为必填项。
华为传递数据给应用仅在NC版本在在9.11及以上版本生效,NC版本查看方式(设置-应用-应用管理-推送服务),老旧设备存在无推送服务或版本较低问题,可尝试升级版本解决,如无法升级,华为未给出老旧设备兼容方案。详细说明可查看:自定义点击消息动作
如上架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设备是不生效的,第二天才生效,被全量推送计算在目标设备组中,T+1规则。 而对应单一OPPO设备推送时,没有T+1规则限制,注册成功即立即生效。
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开始通知栏使用不重要通知过滤,检查通知栏里不重要通知里是否有对应应用的通知。
由于魅族厂商推送对接收监听回调只取AndroidManifest.xml中配置的第一个Reciever,所以谁在前面配置哪个产品就生效,后面配置多少个魅族厂商推送回调监听都无效。 解决方法: 自定义一个Receiver,继承自MzPushMessageReceiver,重新里面所有的方法,然后这个自定义的Receiver里调用MobPush的魅族回调和第三方产品的魅族回调;然后再AndroidManifest.xml文件中进行配置:
在自定义的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); } }