最近要求做一个推送的功能,这个功能很简单,但是也废了挺大劲,所以总结下:
1.推送证书的申请,最初参考这份博客http://www.cocoachina.com/industry/20130321/5862.html,讲的是挺详细,但是还要结合百度开发中心提供的文档一块解决了所有问题。
开发证书,一个账号只能申请一个,要是用别人的开发账号,需要别人导出证书发送给你,或者删除他的证书,自己重新生成一个。(推送服务需要开发证书与推送证书)
2.证书搞定后下载百度推送sdk,在百度开发者中心(http://developer.baidu.com/wiki/index.php?title=docs/cplat/push)下载后修改里面API_KEY,Bundle identifier(从开发者账号中获取,此处也耽误了时间)
3.接下来用百度提供的网页服务端测试推送效果,推送成功。
4.刚开始被要求以qq接收消息的那种形式展现,个人感觉还挺繁琐,花时间整出后,需求被取消了(fuck)!
5.推送的一个重要展现方式就是badgeNumber的展现,这一块花费了点时间,[[UIApplication shareApplication] setApplicationIconBadgeNumber:需要输入的数字。0代表取消,不显示]。 这一块刚开始不知道放到代码中哪一块,这个和程序的生命周期有关,需要考虑程序生命周期。
6.[[UIApplication shareApplication] setApplicationIconBadgeNumber:需要输入的数字。0代表取消,不显示]。这块遇到的最大的问题就是服务器发送过badge,程序的图标应该默认修改,但是程序没修改,郁闷了好久,最后原因是服务器发送的badge为字符串形式,本来应该数字的形式。mygod!
7.[[UIApplication shareApplication] setApplicationIconBadgeNumber:需要输入的数字。0代表取消,不显示]设置逻辑需要客户端和服务端商量好,客户端不可能完全控制!
8.推送的工作结束了,接下来是我项目自己的问题,是一个IOS7 navigationBar 和状态栏重叠的问题,这个困扰了一段时间,最终实现方式在willViewAppear 中
self.navigationController.view.frame = [[UIScreenmainScreen] applicationFrame];我看了网上的很多方式都不行,最后就用
self.navigationController.view.frame = [[UIScreenmainScreen] applicationFrame];解决了问题,如果牵扯到横竖屏还要在
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration中添加self.navigationController.view.frame = [[UIScreen mainScreen] applicationFrame];
我写自己遇到的问题,如有不清楚的请留言,本人会耐心回答,我也收到了很多别人帮助