你的位置:首页 > 操作系统

[操作系统]关于iOS的推送服务的点点


    苹果推送通知服务(Apple Push Notification Service) 简称APNS. 是iOS应用中十分常见的一种交互方式. 

    APNS依托一个或几个系统常驻进程运作,  接管所有应用的消息推送, 所以可看作是独立于应用之外, 而且是设备和苹果服务器之间的通讯, 而非应用的提供商服务器. 

    这和 Android不同, Android更像是传统桌面电脑系统的做法. 每个需要后台推送的应用有各自的单独后台进程, 才能和各自的服务器通讯, 交换数据. 

    另外其实 Android 也有类似 APNS 的 GCM(Google Cloud Message),属于开发者可选,非强制.

    所以你大概看出来区别,iOS 的消息推送机制面世之时是一种全新的解决方案(堪称平台中的平台),应用本身不能有常驻的后台进程,系统的开销少,内存使用更少,电量也

更少(把更多的运算和资源开销放在云端,非设备端)。而 Android 的特点,虽然开销大,优点是更稳定快速,但不明显。

    APNS的工作原理:

         1. App向设备请求是否允许使用通知服务

         2. 设备会携带App名向苹果的推送通知服务器发送允许接受通知服务的请求

         3. 苹果推送通知服务器将deviceToken和App名发送给设备

         4. App将deviceToken等信息发送至我们自己的存储通知内容的服务器

         5. 我们自己的存储通知内容的服务器将deviceToken和通知内容发送给苹果推送通知服务器

         6. 苹果推送通知服务器最后将通知内容按照deviceToken下发到设备

    APNS的使用:

         1. 在https://developer.apple.com/account/ios/identifiers/bundle/bundleList.action中注册App的id

         2. 在https://developer.apple.com/account/ios/certificate/certificateList.action?type=development中注册APNS推送证书下载并安装

         3. 一般的APNS都是在AppDelegate中进行.

            1). 首先要注册通知服务, 由于iOS8.0之后的推送通知注册方法改变, 所以要进行设备的系统版本判断

            // 注册通知服务

            if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) {

                [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |

                                                                                       UIRemoteNotificationTypeSound |

                                                                                       UIRemoteNotificationTypeAlert)];

            } else {

               UIUserNotificationSettings* settings = [UIUserNotificationSettings settingsForTypes:(

                                                                                          UIRemoteNotificationTypeBadge |

                                                                                          UIRemoteNotificationTypeSound |

                                                                                          UIRemoteNotificationTypeAlert) categories:nil];

              [application registerUserNotificationSettings:settings];

              [ application registerForRemoteNotifications];

           }

       4. 注册成功调用的方法

         - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

       5. 注册失败调用的方法

         - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

       6. 接送推送消息的触发方法

        - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

   另: 推送中经常出现在icon上的角标 [UIApplication sharedApplication].applicationIconBadgeNumber




四川旅游地图线路大全四川旅游多少钱四川旅游攻略大全四川旅游攻略自助游四川旅游报价价格广州南站到沙湾古镇怎么走?广州南站到沙湾古镇坐几号地铁? 2015番禺美食节举办多久?广州番禺美食节到什么时候? 2015广州番禺美食节有什么好吃的?番禺美食节特色? 2015沙湾音乐节举办地点?广州沙湾音乐节在哪里举办? 2015珠海元宵节去哪玩?珠海元宵节晚会有什么好玩的? 2015珠海元宵节哪里有灯会?珠海元宵节去哪玩? 2015珠海元宵节活动哪里有?珠海元宵节活动介绍? 2015广州花灯节什么时候?广州花灯节有什么好玩的? 森波拉酒店住宿?森波拉度假森林住宿预订? 森波拉在什么地方?森波拉温泉度假村位置? 去牡丹江攀威虎山赏五花山(组图) 秋游牡丹江 两条受驴友欢迎的路线推荐(图) 马尔代夫九月份天气如何?穿什么衣服好? 去迪拜旅游需要带什么? 教师节的来历,你知道世界各国教师节的来历吗? 泰国曼谷九月份天气如何?穿什么衣服好? IDT71V3558S200BQI8 Datasheet IDT71V3558S200BQI8 Datasheet IDT72V3640L7-5PF Datasheet IDT72V3640L7-5PF Datasheet IDT71V3558S200PF Datasheet IDT71V3558S200PF Datasheet 长春香港三天游 长春香港三天游 长春香港三天游 浙江到港澳5天游 浙江到港澳5天游 浙江到港澳5天游 吉林到香港3天旅游 吉林到香港3天旅游 吉林到香港3天旅游