这两天研究了ios的推送机制,下面介绍下信鸽推送:
应用配置
- 首先进入信鸽,创建一个应用,然后在控制台点击应用列表:如下图:
- 点击应用配置,出现应用配置界面:
- 在开发环境下,添加个测试设备:
鼠标移动到测试设备上的时候回出现修改按钮,点击按钮,出现添加设备界面:(设备的token:udid)
- 添加发布和测试证书
参考信鸽的开发者文档,设置证书,如果还有疑问的话可以参考这个链接,也是推送证书的创建,写的比较好:http://blog.sina.com.cn/s/blog_6afb7d800101fa29.html
证书设置好后,打开终端,找到项目所在目录
(一定要在相应目录下,原先我验证的时候直接在根目录,一直报错,找不到文件,后来才发现应该在项目目录下验证的!!),验证下证书是否合法:
开发证书:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert xxx.pem -key xxx.pem
测试证书:openssl s_client -connect gateway.push.apple.com:2195 -cert xxx.pem -key xxx.pem
验证合法后开始上传证书,鼠标滑动到开发证书,生产证书的时候回出现上传按钮,点击上传按钮,出现相应界面,上传即可。
接入SDK
按照文档上的接入,一般不会出现什么问题,在开发环境下,设置个指定账号,:(这个账号在发通知的时候会用到,开发环境的话设置这个账号,查看指定设备是否收到通知,如果是发布环境,根据自己需求是否设置)
点击通知进入相应界面,在下面这个方法里实现:
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
}
至此,应用配置,SDK接入已完成,终于可以测试发送通知了!!
发送通知
在应用配置界面,左侧工具栏,点击创建通知,出现创建通知界面:
如上图所示,生产环境和开发环境 有些出入,生产环境的用户范围你可以根据需要选择是所有设备还是部分账号,开发环境的用户范围是单个账号,账号为接入SDK
的时候在appdelegate里面设置的账号,[XGPush setAccount:@”123456”];
,添加到这里,就OK了,填好相应内容,点击发送,出现下图提示时,就发送通知成功了!
开发环境中遇到的问题
在发通知的时候一直提示:无效账号,请检测证书是否正确。
我在终端试过了,是正确的,后来才发现是project-general的team选错了,应该选相应的有通知功能的ID,再检查code signing 的profile ,选择自己创建的有通知功能的profile,再次运行程序,发送通知,就收到推送的消息了。
最后再次提醒,证书一定要设置正确!!!