iOS消息推送机制详解(Push Notify - APNS)

来源:互联网 发布:python示例程序 编辑:程序博客网 时间:2024/05/22 17:04

由于客户的应用需求,要求在应用软件种加入消息推送的提示,根据提示信息打开响应的连接。


故对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文件的步骤参考网址如下:

点击打开链接



原创粉丝点击