APNS-apple的推送服务

推送通知是iOS3.0之后引入的功能,允许程序在未运行时告知用户新消息。它通过远程服务器发送通知,经由Apple Push Notification Service(APNS)传递到设备。用户可通过通知了解新信息或数据,并选择打开应用查看或忽略。
摘要由CSDN通过智能技术生成
      推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能。是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的。一般说来,当要显示消息或下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称apns)推送到设备的程序上。

推送的新消息可能是一条信息、一项即将到期的日程或是一份远程服务器上的新数据。在系统上展现的时候,可以显示警告信息或在程序icon上显示数字,同时,也可以播放警告音。一旦用户注意到程序有新的信息、时间或是数据,他们可以运行程序并访问新的内容。也可以选择忽略通知,这时程序将不会被激活。

       推送原理

  推送的实现方式:
  1. 客户端应用程序向apns注册通知服务,从
    1. APNS Server获取deviceToken。
    1. 客户端应用程序接受deviceToken。
  2. 客户度应用程序将deviceToken发送给push服务器端程序(Provider),也就是应用程序服务器。
  3. 当应用服务器需要向给客户端发送通知时,将通知发送给APNS服务器。
  4.   APNS服务器将消息发送给客户端,然后有设备操作系统将通知发送给应用程序。
 客户端应用程序的代码:
首先,客户端程序向APNS注册使用通知服务,apns会向客户端返回devicetoken,在代理中接受token
- (void)applicationDidFinishLaunching:(UIApplication *)app {
   // other setup tasks here....
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
然后,代理接收从苹果服务器APNS返回的唯一的设备token,并将token发送给应用服务器(不是apns
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
    const void *devTokenBytes = [devToken bytes];
    self.registered = YES;
    [self sendProviderDeviceToken:devTokenBytes]; // custom method
}
 
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
    NSLog(@"Error in registration. Error: %@", err);
}

客户端接受从apns得到得消息,并进行处理

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif {
    NSString *itemName = [notif.userInfo objectForKey:ToDoItemKey]
    [viewController displayItem:itemName];  // custom method
    application.applicationIconBadgeNumber = notification.applicationIconBadgeNumber-1;
}

实现推送服务也需要服务器得参与,服务器端应用程序配置比较简单,参考apple文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值