帮助与文档

> >

1.后台进程杀死了,走厂商通道的话收到通知后,点击,不能正确执行App内跳转了的问题;

厂商跳转都是走的默认跳转方式,各个厂商跳转方式不同,MobPush这块正在做优化统一处理;
小米跳转,通过在启动页获取intent获取附加数据,通过mobpush_link_k获取scheme uri,通过Intent自行跳转,如携带附加数据则可通过mobpush_link_v,获取附加数据添加到intent中
华为处理方式,在点击回调方法里进行自行跳转和附加数据传值(建议华为和小米统一在点击回调方法里进行自行跳转和附加数据传值处理)以下处理方法:

2.应用在前台时,mobpush通道收不到推送消息的问题;

(1)检查手机网络是否正常的;
(2)检查手机是否有打开应用通知权限;
(3)是否在通知栏不重要的通知里;
(4)检查应用配置是否正确的;
(5)如果自定义了application的话,需要在application做下mobsdk的初始化;
(6)在命令行中输入adb shell
ps|grep应用包名查询下是否存在应用对应的进程。
若以上都无误的话可以重启下手机卸载应用重装再试下。

3.关于别名 标签的设置的问题;

别名只可以设置一个,标签可以有多个;

别名推送每次都会覆盖之前的;标签推送的话,如果标签为重复的话,会追加上,重复的话覆盖;

4.关于自定义通知消息没有通知栏问题;

需要点击打开才显示;

5.使用环信sdk,此sdk有包含小米的服务,会与集成我们的push冲突的问题;

 如果使用了小米的服务的话,可以使用小米官方提供的小米包,而不是用我们提供的小米包;

6.推送默认点击跳转界面

推送时,设置点击通知默认跳转某界面,可在AndroidManifest.xml文件中,对默认跳转界面进行如下配置:

例如正常推送消息,点击通知默认跳转主界面,可进行如下配置:

7.配置了默认点击跳转界面,对所有通道都有效吗?

不是,对MobPush、魅族、小米、华为、OPPO通道有效;对FCM通道无效。

8.如何获取推送的附加字段?

(1)MobPush、魅族推送、小米推送:

MobPush SDK内部已进行统一封装处理,走MobPush、魅族、小米通道推送时,在点击跳转默认界面里,通过getIntent()获取跳转的Intent,利用Intent的getExtras()获取附加数据,通过msg字段获取推送消息实体,附加数据在推送消息实体的getExtrasMap()获取推送消息添加的附加数据。以Demo为例,点击通知默认跳转MainActivity界面,在此界面的onCreate()和OnNewIntent()中处理Intent:

1.在onCreate()和onNewIntent()获取intent;
2.通过intent.getExtras()获取Bundle;
3.获取Bundle中key为msg的数据;
4.获取msg中extrasMap;

具体代码示例:

(2)华为通道、OPPO通道:

由于华为推送点击通知回调存在bug,某些华为机型上不是每次点击通知都会回调,华为官方后续会把点击通知回调废弃,故采用了推荐的Intent Uri方式推送,附加数据是放在Intent Uri上的,MobPush SDK内部不能封装处理,需用户自行在跳转界面进行附加数据的获取和处理:

获取附加数据和处理方法:

1.在onCreate()和onNewIntent()获取intent

2.通过intent.getExtras()获取Bundle

3.获取Bundle中附加数据,而此处针对华为通道来说,由于MobPush SDK内部未进行处理,附加数据都是暴露的,可通过推送时添加的附加数据key直接获取值,无需通过msg获取MobPushNotifyMessage推送消息实体,再通过消息实体获取附加数据。

具体代码示例:

(3)OPPO通道:

由于OPPO推送暂不支持推送回调,MobPush SDK内部也无法进行封装处理,需用户自行在跳转界面进行附加数据的获取和处理。

获取附加数据和处理方法:

1.在onCreate()和onNewIntent()获取intent

2.通过intent.getExtras()获取Bundle

3.获取Bundle中附加数据,而此处针对OPPO通道来说,由于MobPush SDK内部未进行处理,附加数据都是暴露的,可通过推送时添加的附加数据key直接获取值,无需通过msg获取MobPushNotifyMessage推送消息实体,再通过消息实体获取附加数据。

具体代码示例:

(4)FCM通道:

由于FCM推送分应用在前台和非前台两种情况,在前台时MobPush SDK内部已经处理,获取附加数据可参考上面MobPush、魅族推送、小米推送方式;在非前台时没有相应回调,点击通知时,默认跳转启动页,同时配置了默认点击跳转主页也是无效的,都是跳转启动页,在启动页里onCreate()和onNewIntent()获取intent并进行附加数据处理:

前台时处理可参看MobPush、魅族推送、小米推送方式

非前台时需在启动页的onCreate()和onNewIntent()获取intent,处理附加数据逻辑可参数华为推送处理方式,直接获取Bundle中附加数据key相对应的值即可,是没有任何包裹,暴露的。

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

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

而对应单一OPPO设备推送时,没有T+1规则限制,注册成功即立即生效。

10.离线消息有条数限制吗?重新启动应用最多能接收多少条离线消息?

对于同一个用户默认保留10条

11.调用MobPush.setClickNotificationToLaunchMainActivity(),设置为false,点击通知不启动主页,为什么设置后,没有起作用?

此方法不是对所有通道都起作用,目前只对MobPush通道、魅族通道、小米通道起作用,对于华为通道、OPPO通道、FCM通道来说,由于各个厂商不同实现的原因,是否调用此方式都不影响这三个通道,默认都是启动主页。

12.接收回调和点击通知回调一定会被调用吗?

不一定。分推送通道,不同厂商,有不同的实现方式,导致有的都回调,有的只会回调点击通知,有的都没有回调。

对MobPush通道而言,接收回调和点击通知回调都会被调用;

对华为厂商通道而言,厂商推送只提供了点击通知回调;

对小米厂商通道而言,接收回调和点击通知回调都会被调用;

对魅族厂商通道而言,接收回调和点击通知回调都会被调用;

对OPPO厂商通道而言,两种回调都没有;

对FCM厂商通道而言,应用在前台时接收回调和点击通知回调都会被调用,应用在后台或者应用进程被杀掉未启动时两种回调都没有。

13.设置标签成功后,进行通过标签推送,接收不到推送?

设置标签成功后,个别厂商同步拉取数据需要时间,导致接口设置标签成功,但是推送时设备没有同步,没有目标设备,故推送接收不到。建议设备标签成功后,等待几分钟之后再进行推送。

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

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

VIVO:
在未接入VIVO PUSH前,应用的通知栏权限是默认关闭状态;接入OPPO PUSH后,可以联系VIVO客户人员,进行应用加入白名单,通知栏权限默认开启。

15.小米手机接收不到推送?

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

16.安卓9.0系统获取不到regid

安卓9.0系统默认不支持http,需要在manifest清单文件中配置:android:usesCleartextTraffic=”true”,如下所示:
具体代码示例:

17.使用workmanager导致获取不到regid

workmanager 默认不支持多进程 mobpush会开一个新进程 导致application直接崩溃 因为我们获取设备id是异步的 所以还没有获取到regid就结束了
解决方法:在manifest中配置如下属性http://wiki.mob.com/wp-content/uploads/2019/01/CUD9HL8Y9BITW_9SFXNY5X.png
在代码中添加如下代码

iOS 常见问题:

1 Undefined symbols for architecture arm64:
“_OBJC_CLASS_$_MobPushServiceExtension”, referenced from:
objc-class-ref in NotificationService.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
未 添加 MobPushServiceExtension 依赖库


2 registrationIds 没有限制这个个数,第一次安装应用获取不到,第二次可以
3{“statue”:4801,”error”:”请求IP不匹配或者未设置”}

服务器是多IP,后台只配置了一个IP
4 无推送目标
1 检查下 证书
2 推送的环境和应用的环境是否一致

3 设置推送环境的代码

4 定向推送的目标工程中未设置(标签,别名)

相关文档