您的位置:首页 > 移动开发

iOS之App远程推送APNs(二)

2015-12-06 00:24 411 查看
APNS(英文全称:Apple Push Notification Service),中文翻译为:苹果推送通知服务。 该技术由苹果公司提供的APNS服务。

当我们的App在发布之前我们会向苹果服务器申请为应用添加远程服务推送,下面为大家粘贴注册APNs服务的代码作为参考:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//注册远程推送到苹果的服务器,如果注册成功,App推送服务器会给我们返回一个token值
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0) {//ios8之前和之后设备的推送方式不同

[application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|//推送的信息数量
UIRemoteNotificationTypeSound|//推送的声音
UIRemoteNotificationTypeAlert)];//推送的提示框
}else {

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:
(UIRemoteNotificationTypeBadge|
UIRemoteNotificationTypeSound|
UIRemoteNotificationTypeAlert)
categories:nil];
[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];
}

return YES;
}

#pragma mark 远程推送的回调方法
//远程推送注册成功的回调方法
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{

NSLog(@"%s",__FUNCTION__);
NSLog(@"deviceToken:%@",[NSString stringWithFormat:@"%@",deviceToken]);
//返回的Token值:deviceToken:<5d3451a6 1ba4786f 13880005 720e2c26 6eb9dc54 1c3936e9 ae4c850c 23a0c5ef>

}

//推送失败的回调方法
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
NSLog(@"%s",__FUNCTION__);
}


我们将获取的Token值做简单的处理(将里面的空格和括号删除):

5d3451a61ba4786f13880005720e2c266eb9dc541c3936e9ae4c850c23a0c5ef

将这个Token值Post给服务器和P12文件(包括开发阶段和发布阶段两个文件)传给后台处理。

Token:将苹果iOS设备的UDID和App应用的BendleID通过证书颁发机构生成的CSR证书绑定后,产生SSL证书向苹果APNs服务器提出申请获取唯一的标示Token,将Token返回到App应用上,程序员再将Token进行简单处理的Token值和P12证书传给自己的服务器,服务器进行处理把信息发送到APNs,APNs将消息推送给App用户。

另附推送原理图:



根据图片我们可以概括一下:

1、应用程序App注册APNS消息推送。

2、iOS从APNS Server获取devicetoken,应用程序App接收device token。

3、应用程序App将device token发送给程序的PUSH服务器(后台)。

4、程序的PUSH服务器向苹果APNS服务发送消息。

5、APNS服务将消息发送给应用程序App。

注释:

SSL:根据CSR生成的aps_development.cer的SSL证书和SSL发布证书

Private Key:生成证书时的秘钥
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: