1. UIApplacation向 APNS 注册 push notification 服务
(1) 应用程序要支持推送服务, 在网页里面配置 http://developer.apple.com/devceter/ios/index.action
(2) 登陆苹果开发者账号 (注意是收费账号 $99 或者 $ 299)
(3) 下载push证书 (主要是给程序签名 push服务只有收费开发者才具备, 所以需要签名验证), 如果没有push证书 (APP ID -> 钥匙串程序生成reqest -> push证书)
注意事项: APP ID 的Bundle ID 必须和plist文件中的Bundle identifier一致, APP ID 一旦生成将不可修改
(4) 把证书安装到钥匙串里 (双击证书文件)
(5) 生成 编译程序 用的描述文件 (网页里面进行)
向APNS 注册push服务 (UIApplication 的 registerForRemoteNotificationTypes: 方法)
2. 获取APNS 分配的DeviceToken (64位16进制串)
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
3. 把DeviceToken 发送给自己的后台服务器, 服务器记录每台设备的DeviceToken 以便日后推送消息给客户端, (需要一个网络接口, 让客户端发送DeviceToken)
4. 服务器推送消息给客户端
(1) 服务器除了需要有客户端的DeviceToken之外, 还要有push证书, 对push 的内容进行签名(苹果为了防止恶意向客户端(比如DeviceToken泄露了)发送消息, 每次推送消息, 都需要证书进行签名, 从而避免黑客恶意攻击用户手机)
(2) 如果你的服务器是Java 写的, 可以直接使用钥匙串导出的 P12 文件 (证书和密匙一起导出 ) 如果你的服务器是PHP写的, 因为PHP语言不支持P12文件类型, 需要转换为pem文件.
(3) 将P12转换为pem文件: 终端 先找到你P12所在的目录 openssl pkcs12 -in CertificateName.p12 - outCertificateName.pem - nodes
(4) 服务器发送信息给APNS , APNS自动将信息推送到客户端.
5. 客户端处理收到的信息
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
注意事项:
1.