ReactNative版友盟推送

RN友盟推送

简述下这篇文章的背景历史,一个老项目因为打算用ReactNative重构,所以重新用ReactNative弄了友盟推送。友盟官网上也有了ReactNative版的各种库,这点感觉友盟棒棒哒(但是有件事我一定要吐槽一下)。其实说是友盟RN版的,其实所有的库都和原来iOS的一样,就是多了几个JS类,负责在RN中桥接它们的库,不过这个也是正常的。那么所谓的RN版友盟推送,其实也就和普通推送差不多。

但是,我经过亲身实验,觉得开发文档还是很不清楚的,尤其是苹果更新了iOS10以后,推送方法就和有病一样要区分iOS10之前和之后。具体配置就不说了,这个网上内容很多,按照文档上的小心配置,注意不要少了依赖库,就没什么问题。我主要觉得蛋疼的点是下面这个需求:

获取推送内容的userInfo

我们知道友盟推送在官网上可以配置,标题,内容,二级标题等等,更为复杂的也有,暂时不讨论。我们是想在配置中添加自定义参数,通过推送获取到这个参数。那么,友盟的文档来了-----------------

如图所示啊,下面这个方法是iOS10以下才走,但是上面那个方法什么都没说,我用的测试版本是iOS10以上,确实两个方法都不走。

再看图

这个就是友盟给所有的获取信息的方法了,后两个的方法介绍人家写的非常明白:

一.处理前台收到通知的代理方法(的确,我记得前两年友盟还不支持苹果手机在前台的情况下收到推送的,现在已经支持了,这个方法是走的,手机在前台,只要推送消息一来,就自动运行这个方法。)

二.处理后台点击通知的代理方法(咦,和前面那个有点不一样哦,说明说是点击通知的代理方法,经过实际测验也是,手机在后台收到推送后,不走这个方法,当点击以后才收到这个方法)

这我就不开心了,那这些方法根本就不够全面呀,我们先来看一共有多少种情况:

这样我们将实际用户的推送行为分为以下6种情况分别由A,B,C,D,E,F来代替。由于我们暂时只研究iOS10以上的情况,我们把上面友盟给出的IOS10的方法定义为方法一,方法二。

A情况 用户前台收到推送消息,不点击推送栏消息。 那么很自然的走了方法一

B情况 用户前台收到推送消息,并且点击了推送栏消息。此时会走两个方法,没错,先走方法一,后走方法二,也就是所谓的后台点击其实前台点击也是走这个方法

C情况 用户后台收到推送消息,不点击推送栏消息。此时什么方法也不走

D情况 用户后台收到推送消息,点击推送栏消息。此时走方法二。

E情况 用户App杀死的情况,点击推送栏消息进入,此时走方法二。

F情况 用户App杀死的情况,点击应用图标进入,此时什么方法也不走。

我明明记得以前1个方法都搞定了,现在是怎么肥事!大兄得!

那么事情没有结束,我当然会问友盟客服了,我想让他来拯救我这颗千疮百孔的心灵,于是友盟客服告诉我,其实C情况也并不是友盟方法不会走,C情况可以走友盟的静默推送,而且标重点:静默推送在友盟的推送后台配置是无法进行的,需要你们服务器来推送并且要传1个参数@“content-aviliable=1”

看文档

怎么个事,你们文档不是告诉我当app没有启动或者被杀掉的时候将无法收到静默推送吗!哦哦,那就应该是@“app没有启动”这句话不等于app在后台的情况,那你app没有启动和被杀死不就是1个意思了嘛!!你还用毛线或者!这友盟的文档感觉像阅读理解啊!

再看文档:

你刚刚不是让我传@“content-aviliable”参数么,你们文档说不应该包含其他字段,这是怎么回事……而且这个方法

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
复制代码

你不是写的iOS10以下走这个方法吗?你们友盟的静默推送不支持iOS10以上?

好了,文章写完了。没错,可能看完的你有些疑惑,我们公司后台还没有弄这些东西,所以我也无法给出最新的实验成果。如果你有好的答案请告诉我。

中间还有一些RN的东西,下次再记录。完。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值