在ios客户端集成个推并不难,按照官方文档和demo,还有几个很重要的时序图跑几遍就大概知道怎么写代码了。
这里用根据自己的理解重述一下个推的代码流程:
1、创建个推skd对象,skd会将clientid发送到个推服务器,并异步返回clientid。个推服务器利用clientid来唯一标识每一个设备,收到clientid之后,你可以将clientid和用户信息等上传到app服务器上。
2、向苹果服务器注册apns,收到devicetoken后,调用个推skd方法将devicetoken和clientid绑定。
3、此时app服务器可以利用clientid向设备推送信息:(1)如果app在前台时,信息会从app服务器传送到个推服务器,由个推服务器通过clientid找到对应的设备。(2)如果app切换到后台时,此时个推sdk被关闭,推送消息通过apns,由devicetoken来找到对应的设备。
个推文档中建议将个推sdk的调用放到主线程中,以保证线程安全。
接下来重点记录一下个推坑我的地方:
1、个推发布环境下和开发环境下要上传不同的证书,用发布证书安装的app无法收到开发环境证书的推送消息。
2、替换开发证书和发布证书需要24小时后才能推送成功,原因:当新的证书生效后,就会有新的devicetoken,但是坑爹的个推居然要间隔24小时,才会将clientid和devicetoken重新绑定,所以这个时候clientid根本映射不到正确的devicetoken,所以后台推送无法成功。解决办法:可以同一个app注册两个个推,上传不同的证书、使用不同的appkey,这样就不需要24小时的等待了。
3、透传消息:据说就是自定义消息,区分普通的通知。
时间: 2024-10-11 01:04:15