• 关于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

  • 相关阅读:
    杰出人才项目管理的设计与实现
    企业人事信息管理系统开发与设计
    高等职业院校人事薪资管理系统的开发与实现
    基于UML的高校组织人事档案管理系统建模研究
    基于UML技术的电子商务系统设计
    人事管理系统的设计与实现
    文献随便目录4
    Qt 设置button互斥,一组button只能选中一个
    C++ 子类重写父类函数,子类调用重写函数,执行父类的函数还是子类的函数?
    QLabel 设置背景图片的方法和解决图片太大不能完显示的办法
  • 原文地址:https://www.cnblogs.com/sunSQuan/p/4662362.html
Copyright © 2020-2023  润新知