一.在文章开始之前有必要给大家简单的介绍一下个推和极光的推送机制。
想必大家对极光很熟悉,也相信大部分人都用过。极光分为通知和消息。通知就是当程序在后台运行时。导航条出现的那一条推送。而消息则不通过推送条直接推送到用户app中的功能。为什么我要介绍这个是因为个推不是这么做的。
个推区别极光,它分为消息和透传(极光中的消息)在个推官网上有这么一句话不知道大家注意没注意。其实意思就是个推把通知和透传放到一起了。当我们程序处于后台时候。服务器发送透传信息的时候会以通知的形式送达手机端。当我们点击通知打开程序后传达的消息又会以透传的方式送达app中。下面就分享一下我这两天集成双推送的心酸史吧。
坑1.冲突问题。
当我们打开个推sdk包的时候 sdk中会有两个framework 切记一定要选择图二中的 因为如果两个一起导入会出现冲突问题。
在多说一点冲突后回报红 会告诉你冲突的文件目录。我们默认的时候运行程序时要把所有的三方库全部添加。这样有一个不好就是 当我们饮用一些三方库的时候会莫名的报冲突 解决办法也很简单就是双击打开后 吧-all_load改成-force_load。也就是当需要加载的时候再去调用这些库文件。
坑2.集成双推送你会发现无论是个推还是极光你都会受到两条推送。
这个问题我在cc上也问了。但是说做过双推送的都遇到这种情况。最近也查了下资料也没找到具体的原因。毕竟技术不够智商来凑吗。既然我改变不了你外部 我在代码中修改。当同事推送两条一样的通知过来的时候 我默认取第二条这样就ok。下面是最关键的。坑3.
坑3.无论是极光还是个推当后台发送通知时候程序莫名的会崩溃掉。
下面是崩溃的错误信息和解决办法(你仔细看崩溃信息,网上查你根本查不到解决办法当时卡在这里将近2天的时间。) 究其原因最后发现问题出在这个代理上。completionHandler(UIBackgroundFetchResultNewData)无论是极光还是个推都会用到这个方法。当两个在一个代理中使用两个这个方法的时候就会出现崩溃。因此初始化极光和个推后 +一个就可以了。