关于百度推送iOS SDK1.5.4 Register时报[BPushUtility isAllowedNotificationCalback]: unrecognized selector s...

这两天后台反应说iOS这边百度推送报错说证书过期,然后就开始了漫长的填坑之旅.....

1.证书过期咋办

  • 首先去开发者中心看看发布证书或者开发证书还在不在,如果发现不在了,那就是苹果给你删了(现在到期会自动删),然后重新生成一个就好了。如果快过期了,重新生成一个,然后再把原来那个revoke
  • 搞完证书之后,检查在App IDs里面,对应的AppID是否开启了推送,完整流程可以看这篇文章。

2.更新证书和SDK

  • 上面的pem文件导出后,去到百度推送官网,更新证书。
  • 下载最新的SDK,然后到工程里面替换掉,旧版SDK会有一个BPushCerResource.bundle,新版已经不需要了,删了就行。
    关于百度推送iOS SDK1.5.4 Register时报[BPushUtility isAllowedNotificationCalback]: unrecognized selector s..._第1张图片
    SDK包解压后长这样
    (如果用到了广告标志符就选idfaversion里面的Bpush.h、libPush.a)两个版本的文件夹里面都有一个test.caf,这个是百度的demo用来播放声音的,忽略就好。拉倒工程后记得去检查Build Phases里面的Link Binary With Libraries里面有没有那个.a文件。

3.坑.....

我在替换完文件之后,发现在[Bpush register...]方法会直接崩溃

报错....
去百度了一圈没找到(事实证明,百度的问题不要问百度....),后面经过一番思考(google),终于找到了问题所在,解决方式也很简单。
关于百度推送iOS SDK1.5.4 Register时报[BPushUtility isAllowedNotificationCalback]: unrecognized selector s..._第2张图片
Other Linker Flags里添加-all_load或者是-Objc,一般来说添加-Objc就可以了,-all_load有时候会报错。这两个字段的差异,可以去找其他文章看看。

4.总结

  • 按照官方demo的顺序调用SDK的方法,比如registerDeviceToken要在bindChannelWithCompleteHandler之前等等这些。
  • 检查自己生成的pem文件是否能正常使用,打开终端,进入到pem文件目录。
    开发pem测试命令:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert 开发pem文件名.pem
    发布pem测试命令:openssl s_client -connect gateway.push.apple.com:2195 -cert 发布pem文件名.pem
    输入命令之后,会冒出一堆东西,然后终端会提示让你输入东西,这时候你随便输入什么,然后回车,就会显示closed,这时候pem就是好的,能正常使用。如果不对,那么就得重新去生成pem文件。

6.问题

最开始我没想到要替换成最新版的SDK,但是在使用以前的SDK的时候,网络畅通,bindChannelWithCompleteHandler方法会报错,error code 10002 网络问题,查了一下,有人说把BPushCerResource.bundle添加到Copy Bundle Resources就能解决,试了下没用,希望有解决过的朋友可以回复一下。

你可能感兴趣的:(关于百度推送iOS SDK1.5.4 Register时报[BPushUtility isAllowedNotificationCalback]: unrecognized selector s...)