APNS机制的简单分析
来源:互联网 发布:成交量公式源码 编辑:程序博客网 时间:2024/06/07 15:36
提到消息推送,那就不得不提及苹果的APNS(Apple Push Notification Service)。我们首先来看一组数据(数据来自互联网)
1. 苹果在WWDC 2012上宣布每天发送70亿条消息推送2. 有分析称在苹果的2019财年,iPhone活跃用户数量将突破10亿
那么你有没有想过,这几年移动互联网的快速发展,APNS推送数据保守估能达到将近千亿的量级,这么大的用户活跃量和巨大的消息推送数目,得多大的服务器来承受?
客户端
如果想要你的应用能收到消息推送,其实客户端需要做的事情并不多。下面来分析下苹果消息推送的机制
1. App开启消息推送服务,用户配置是否想要收到消息推送2. App向APNS注册,APNS向App返回设备码(device token)3. App将收到的设备码提供给应用服务器4. 当应用服务器想要给App发送消息时,根据设备码将需要发送的内容push到APNS5. APNS将消息推送到设备
这个推送是不需要应用开启的情况下可以收到的,也就是说苹果设备需要与APNS有连接机制,否则不可能在第一时间收到APNS的推送通知
//应用发起注册[[UIApplication sharedApplication] registerForRemoteNotificationTypes (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];//收到注册后的成功返回- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;//收到注册后的失败返回- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;//收到消息推送- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler;
上面完成了5个步骤中的4个,剩下的就是应用服务器需要处理
应用服务器
应用服务器需要与APNS创建一个SSL的长链接,不可能说发一个推送之后就断开连接,下次发送再次连接,这个体验就不是很好
发送推送消息地址:gateway.push.apple.com:2195
接收反馈消息地址:feedback.push.apple.com:2196
应用服务器如果推送量不大的话,没有必要做分布式服务,但是向微信、QQ这种日活跃量很大的应用,优秀的消息推送系统架构是很重要的,下图是互联网上找到的一个图片,很简单的说明应用推送系统的架构。但实际上优秀的消息推送系统远比这个复杂
阅读全文
0 0
- APNS机制的简单分析
- APNS的推送机制
- APNS的推送机制
- APNS的推送机制
- 0114 APNS的推送机制
- 苹果APNs机制
- 苹果推送机制APNs
- 苹果推送机制(APNS)
- iOS推送机制APNs
- 关于苹果PUSH(APNS)机制的那点事
- Binder机制简单分析
- 关于苹果PUSH(APNS)机制
- 关于苹果PUSH(APNS)机制
- iOS开发之APNS机制
- Java 反射机制 的超简单实例分析
- Android的Touch事件分发机制简单分析
- 简单分析操作系统的中断机制与进程上下文切换
- linux中断机制简单分析
- python学习之列表list
- 模型压缩技术,卷积核解读
- C语言栈实现
- BZOJ 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 题解
- Linux常用命令总结
- APNS机制的简单分析
- hive select FAILED: RuntimeException java.io.FileNotFoundException: /etc/hive/2.4.2.0-258/0/xasecure
- 高可靠带物理销毁功能固态硬盘的设计要点
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 元素水平垂直居中方法
- 01开始入门
- NotePad++死了结束进程之后整个文档清空了
- greendao 3.2使用总结
- Android----------ontouchlistener触摸事件