关闭

APNS机制的简单分析

标签: apns
183人阅读 评论(0) 收藏 举报
分类:

提到消息推送,那就不得不提及苹果的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到APNS
5. 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
查看评论

一些iOS面试题2

什么是ARC(ARC是为了解决什么问题诞生的)? ARC是Auto Reference Counting的缩写,即自动引用计数,由编译器在代码合适的位置中自动添加retain/Release/Autorelease/dealloc方法从而进行内存管理.ARC几个要点: 在对象被创建时 retain...
  • u012915388
  • u012915388
  • 2015-11-13 10:13
  • 336

iPhone消息推送机制实现与探讨 APNS

最近两天在研究ios的消息推送机制。研究这个东西,还是充满兴趣的。 Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider。 APNS 是Apple Pus...
  • zaitianaoxiang
  • zaitianaoxiang
  • 2011-10-20 12:50
  • 3364

iOS 远程消息推送 APNS推送原理和一步一步开发详解篇

前言:现在第三方推送也很多 ,比如极光,融云,信鸽,其原理也是相同利用APNS推送机制 ,前段公司让做自己的推送,1.避免device token被第三方泄露,保护手机设备信息,2.第三方部分开始收费,一些免费的以后谁又知道呢 ,不如自己创建,除了后台麻烦点,需要数据库来存储token相关字段(后台...
  • YUXIANG19876021
  • YUXIANG19876021
  • 2016-08-16 09:42
  • 12451

iOS消息推送机制详解(Push Notify - APNS)

由于客户的应用需求,要求在应用软件种加入消息推送的提示,根据提示信息打开响应的连接。 故对apple的消息推送机制做了一番研究。 消息推送首先需要几个必要的东西: 1 SLL证书(申请证书的过程不在详述,只是注意需要消息推送应用程序的apple ID一定不能用通配符,这里有2个SLL证...
  • xufeidll
  • xufeidll
  • 2012-07-09 20:18
  • 7279

APNS推送以及app内部消息处理、本地通知的使用

APNS具体的流程大概就是:app注册APNS推送功能,app就会通过iOS系统向APNS服务器要devicetoken,然后将devicetoken传给app的推送服务器,推送服务器带着P12文件和device token,以及要推送的消息,发送给苹果服务器。随后就是上述步骤啦。需要注意的是:xc...
  • qq_18857015
  • qq_18857015
  • 2016-03-23 16:55
  • 2512

APNs入门学习和使用

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/article/2016/12/01/APNs入门学习和使用/APNs入门学习和使用这篇文章费了我好多心血啊,这都是在我测试了一堆失败的代码,看了大量的博客之后,把其中最有用,最精华的部分提取出来的集成,也是...
  • u014394255
  • u014394255
  • 2016-12-04 00:55
  • 2099

APNS的推送机制

APNS的推送机制 与Android上我们自己实现的推送服务不一样,Apple对设备的控制非常严格,消息推送的流程必须要经过APNs: 这里 Provider 是指某个应用的Developer,当然如果开发者使用AVOS Cloud的服务,把发送消息的请求委托给我们,那么这里的Pro...
  • tyforfreedom
  • tyforfreedom
  • 2014-11-19 18:18
  • 284

apns 官方文档

原文地址:https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/LegacyFormat.html#//apple_ref/...
  • ttomqq
  • ttomqq
  • 2015-09-07 16:59
  • 1954

iOS开发——APNS通知的使用

创建测试证书,如果还不会的,可以先看我的另一篇博文http://blog.csdn.net/liumude123/article/details/52190514 按下图操作 按下图操作,continue 按下图操作,你可以选择你需要apns通知的app的bundleID(遮住的就是bundled)...
  • liumude123
  • liumude123
  • 2016-08-12 15:28
  • 803

apns 数据格式

目录[-] Binary Interface V1 Binary Interface V2 JPush 的解决办法 总结 参考 在 iOS 平台上,大部分应用是不允许在后台运行并连接网络的。在应用没有被运行的时候,只能通过 Apple Push Notifi...
  • ttomqq
  • ttomqq
  • 2015-09-07 15:26
  • 960
    个人资料
    • 访问:166921次
    • 积分:2634
    • 等级:
    • 排名:第16313名
    • 原创:91篇
    • 转载:17篇
    • 译文:0篇
    • 评论:16条
    文章分类
    最新评论