iOS关于推送三方SDK替换问题须知

问题

由于之前公司项目中的推送都是使用友盟进行推送的,直到最近安卓端由于友盟SDK含有部分违背隐私协议的收集违规内容导致APPgoogle play下架,所以不得不全套替换成其他的SDKiOS端也不得不因此换成其他家的SDK了,考虑再三,我们决定用个推来进行功能的替换。

经过一顿删减代码,去除了所有关于友盟的SDK的内容,并且开始改用个推的功能代码,测试也一并通过了,但是直到上线,才发现在替换推送的SDK的时候引发了一个bug,问题是这样的:

由于APP老版本使用的是友盟的SDK,所以在老版本的推送功能上,APP后台需要继续沿用友盟的SDK,新版本则用最新的个推。理论上是没有任何问题的,但是偏偏在进行广播推送的时候,部分APP端接连收到了两条一样的推送。

在经过一系列的排查之后,我发现这里的两条推送是由友盟与个推同时推的。但是新版本已经将友盟的代码都去掉了,为什么还会收到友盟的推送呢?问题点也就在这,实际上,友盟后台断定APP版本的时候是依据APP启动的时候的SDK的初始化的时候断定的,如果在完全去除友盟的情况下,由于没有了初始化代码,友盟后台会把新版本当成APP含有友盟SDK的最后一个版本处理,所以此时是没法区分含有友盟与去除友盟版本的,这个问题发生的前提是APP在没有改变devicetoken的情况下出现,也即是用户选择直接升级APP(覆盖安装的时候会出现),而卸载重装的用户由于devicetoken的改变不会出现收到两条一样的推送的问题

解决方案

经过再三考虑,目前的这个版本会因此受影响,还没有特别好的方案去解决它,除了让APP强制升级以外,所以这个问题在进行友盟推送SDK替换的时候遇到的情况还是挺高的,建议如果考虑替换推送的SDK,最好能让用户统一到一个版本,不然由于版本兼容会导致接受多次推送的问题出现。

你可能感兴趣的:(ios)