iOS 板


LINE

看板 iOS  RSS
Apple Push Notification Service (APNs) 前面有讨论到 Push Notification ,在这里我把我的理解,加上 一点个人猜测,针对这个东西做个整理与说明。 历史 iPhone OS 2.x 之前只有使用 Microsoft Exchange 才能有 email 、通讯录以及行事历享有推播服务。 Apple 於 2008 年 6 月 9 日首次宣布将提供 APNs ,但是拖延 了许久都没推出,在 2009 年 3 月 17 日的 iPhone OS 3.0 预览 终於宣布 3.0 将会支援 APNs ,拖延这麽久原因是为了支援各种 程式,所以他们调查了开发者对这个服务的需求,重新设计 APNs 的架构。 观察 1. iPhone 的程序列表里面有下面这一个用来收取 PN 的程序 /System/Library/PrivateFrameworks/ApplePushService.framework/apsd 2. 没经过正式启动(activation)的 iPhone 没办法使用 APNs 3. 如果网路讯号断断续续,那麽会特别耗电。 4. 回覆 iPhone 後,还是可以照常收到之前订阅的 PN 。 (个人经验,待证实) APNs 原理 每个行动装置与 APNs server 随时保持 IP 连线,以让 APNs 可以 随时把讯息送到行动装置上,大致上可以透过下图来表示(参考文 件 3) 讯息提供者 --> APNs server --> iPhone PN 程序 --> 显示在萤幕上 讯息显示在萤幕上後,如果使用者选取开启程式,则程式会主动去向 讯息提供者撷取新的讯息,这部份已经不算 PN 了。 何谓 随时保持 IP 连线 ? 熟悉 TCP/IP 程式设计的人应该了解,两个装置要建立连线,得先 建立一个 socket ,而随时保持 IP 连线的意思就是,这个 socket 建立之後,将会一直保持着,直到取消 PN 或是换 IP address 等等 其他因素。如果换了一个 IP address ,就会重新建立连线。如果装 置失去网路,那麽也会重新建立连线。连线建立以後,理论上没有在 使用其实不太会耗电,会耗电也只是那个负责这个连线的程序消耗的 ,不过一般要保持连线,都会定期传回 keep alive 封包,让对方知 道,我还在这里,不要给我断线。这是会消耗一些电,耗多少要看这 个 keep alive 封包多久传一次。 关於架构的一些猜测 1. 装置辨别 同时使用 APNs 的装置有数百万,那麽为了使正确的讯息跑到正确 的装置上(你总不会希望你的甜言蜜语跑到一个你不认识的人装置 上吧?),那麽每个装置就需要一个不同的识别码。而从观察 2 可以推论,这个识别码是在启动 iPhone 的时候拿到的,而在启动 iPhone 时(参考文件 4),会把装置的 UDID 、 IMEI 以及 ICCID 回传给 Apple ,然後 Apple 会用他的演算法回传 Activation Token 。根据参考文件 3 给装置用的 token 跟 acivation token 是不一样的,而是在第一次使用 APNS 的时候才会拿到。 不过和 activation token 不同的是,这个 token 「可能」每次回 覆之後都会一样(观察 4 )。而我也推测这个 token 只有当装置 有透过正常方法启动,在 Apple 资料库有纪录才会发放。(可参考 文件 3 的 Service-to-Device Connection Trust 图,那个 Device certificate 可能是正常启动後才能拿到) 注:那些 hacktived 的机器,如果装了 Push Fix 那麽他们都会 收到别人的讯息,因为他们都用同一个 APNs device token 。 2. 连线的建立 前面提到随时保持 IP 连线,那是由那一方来建立这个连线呢? 合理的推测是由装置来建立这个连线的。因为行动装置并没有固定 IP address ,不太可能由 APNs server 主动去建立这个连线。 另外,如果网路断断续续,装置就得每次回覆有网路的时候就去跟 server 建立连线,而这个 overhead 是很耗电的,也因此如果待 在网路不稳的地方,电耗得特别快。 和撷取( fetch )的不同 撷取是指定的时刻才去收取讯息,前面的文章已经有蛮多说明了,这里 就不累述。两者耗电差别,其实跟撷取频率有关。之一,撷取最短时间 间隔是 15 分钟( iPhone 的自动撷取),或是开启程式才会去撷取, 如果你不常开程式(以上指 mail 程式),那麽应该是蛮省电的。之二 ,除了 mail 以外,其他程式并不支援自动撷取,没有程序在背景跑, 也会比较省电。相对来说,如果你的 Push Notification 很频繁,那麽 会耗电也是理所当然,不过一般人使用应该不至於太夸张,那些每个小 时光待机就少个好几趴的,肯定不是因为 Push Notification 的(前提 是你所在处讯号稳定),那个耗电根据我的了解,应该是 iPhone OS 的一个 bug ,我之前也有遇到,每个小时 -5% ,每天要充两三次电。 回覆系统也没什麽用,不过在某一天电力突然从 20% 降到 0% 自己关机 ,充满电之後,现在我每天最多只要充一次电啦!(大概三天充两次) 个人猜测可能是电池电量判断错误所引起。 补充:我想越狱,刚如何保有 iPhone 推播功能 1. 越狱时不要选择 Active the iPhone 2. 如果你的机器没有锁(可以用任何 sim 卡),那麽只要打开 iTunes ,连接 iPhone 到电脑就可以了。 3. 如果你的机器有锁,那麽请放入锁定业者的 sim card (可以去借 ),然後打开 iTunes ,连接到电脑即可。 4. 如果你的机器有锁,又找不到锁定业者的 sim card 可以参考 http://twitter.com/MuscleNerd/status/2473263604 不保证有效,而且要有一台合法启动的 iPhone/iPod touch (这个方法是偷那台的凭证来使用) 其他细节可参考以下文件。 参考文件 1. http://en.wikipedia.org/wiki/Apple_Push_Notification_Service 2. http://en.wikipedia.org/wiki/Push_technology 3. http://developer.apple.com/iPhone/library/documentation/ NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ ApplePushService.html http://tinyurl.com/y97trfs 4. http://theiphonewiki.com/wiki/index.php?title=Activation_token -- Some people are born on third base and go through life thinking they hit a triple. - Barry Switzer --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 129.15.127.126 ※ 编辑: yr 来自: 129.15.127.126 (12/10 02:03)
1F:推 poopooer:教学文 感谢! 12/10 01:56
※ 编辑: yr 来自: 129.15.127.126 (12/10 04:15)
2F:推 m0535:推 12/10 06:17
3F:推 airfruit:推! 12/10 08:31
4F:推 Flower1103:推!这篇棒! 12/10 23:04







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP