你的位置:首页 > 软件开发 > 操作系统 > 关于iOS的推送服务的点点

关于iOS的推送服务的点点

发布时间:2015-07-20 19:00:04
苹果推送通知服务(Apple Push Notification Service) 简称APNS. 是iOS应用中十分常见的一种交互方式. APNS依托一个或几个系统常驻进程运作, 接管所有应用的消息推送, 所以可看作是独立于应用之外, 而且是设备和苹果 ...

    苹果推送通知服务(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


原标题:关于iOS的推送服务的点点

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。