由于客户的应用需求,要求在应用软件种加入消息推送的提示,根据提示信息打开响应的连接。
故对apple的消息推送机制做了一番研究。
消息推送首先需要几个必要的东西:
1 SLL证书(申请证书的过程不在详述,只是注意需要消息推送应用程序的apple ID一定不能用通配符,这里有2个SLL证书一个用于调试一个用于发布)
2 DeviceToken(这个实际上是一串64位的字符串,每个手机是唯一的;但是开发者profile和发布者profile获取到的不同)
3 推送消息的服务器,简称Provider
有了以上东西就可以开始进行消息推送的开发了。
流程如下
1 iPhone-》send deviceToken -》Provider
2 Provider -》send message and DeviceToken -》APNS(苹果的消息推送服务器)
3 APNS (根据DeviceToken)-》send message -》iPhone Notifications -》 your APP
以上流程第一条,获取DeviceToken的方法为,在APPDelegate类中重写方法
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"DeviceToken is: %@", deviceToken);
}
将获取到的DeviceToken发送到Provider,一般是一个服务器Provider。
第二条。Provider根据不同的条件发送不同的消息到不同的DeviceToken+信息到APNS。这里我们可以根据不通的DeviceToken来定制用户权限。
比如一共有 A B C D E5个消息,iPhone1 只想获取 A B的消息 iPhone2想获取C D E的消息,这里我们就可以在iPhone想Provider注册DeviceToken的时候定制权限。
具体的Provider代码可参考PushMeBaby那个Demo。
苹果的APNS服务器地址有2个分别为:
测试的服务器地址:gateway.sandbox.push.apple.com 端口2195
产品推送服务器地址:gateway.push.apple.com 端口 2195
第三条。APNS根据不同的DeviceToken将消息发送到不通的iPhone上。
至此我们就可以收到对应的消息在iPhone的通知中。
详细的生成ssl证书以及p12文件的步骤参考网址如下: