实现i设备push notification的一堆要点

来源:互联网 发布:郜艳敏事件知乎 编辑:程序博客网 时间:2024/06/14 14:18

实现i设备push notification的一堆要点

前言 一如既往地 苹果已经给了很详细的文档 https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction/Introduction.html

如果嫌看文档太累 要点如下

0 背景知识 iOS的notification分成local和push两种 push notification是非得有网 连着苹果的推送服务器才能收到的提醒 一次提醒包括图标上的红圈小数字 声音 和消息内容 新浪微博的app在push时就只更新红圈小数字 没有声音和消息内容 instagram就只有消息内容 没有红圈小数字和声音 都看开发者爱好

1 最基础前提 你得拥有一个有效的开发者账号 测试这功能要用到苹果的推送服务器 它可不会让人免费用

2 在iOS Provisioning Portal里创建一个App ID 然后Configure一下 也就是提交个钥匙串 让Apple Push Notification service变成Enabled for Development (日后要正式发布了也同理)

3 创建一个包含你刚创建的App ID的Development Provisioning Profile 注意 Xcode4很贴心地帮你管理着一个App ID是*的通用Provisioning Profile 它只是方便你真机调试一般程序用的 要想测试push notification不能用这个 必须新建一个有明确App ID的Development Provisioning Profile 然后用它打包上真机

4 开始写客户端代码 在程序启动之后 一般也就是applicationDidFinishLaunching:里面 执行registerForRemoteNotificationTypes:方法 这时候需要联网

5 失败的话会执行 – (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err;

6 成功的话会执行 – (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken;

7 把devToken发给你的服务器 你的服务器要跟苹果的推送服务器建立连接了 这需要客户端给的devToken

8 客户端还应该考虑实现application:didReceiveRemoteNotification:方法 不过其实就算你不管它 客户端也可以正确收到push notification了

9 除此之外客户端还得考虑一下什么时候把红圈小数字置为-1 如果不理它 它将一直存在

10 好了 剩下的事儿都是服务器该操心的了 SSL证书和payload神马的 虽然那也很麻烦 但不在本文讨论范围之内