V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huanglexus
V2EX  ›  iOS

关于 iOS 设备如何接收到 push notificaton 的一点疑问

  •  
  •   huanglexus · 2015-02-12 16:28:17 +08:00 · 4169 次点击
    这是一个创建于 3572 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前看到一个帖子讨论支付宝或者微信这些的扫码登入/扫码支付,手机扫了码之后,电脑端也就收到反馈。

    回复说明了有两种实现方式:

    1. 轮询,不停地向服务端询问用户是否扫了码
    2. 用WebSocket之类的建立长连接,一旦用户扫码成功,服务器传回消息

    很明显第二种方法对服务器的压力更小。

    那我现在的问题是,iOS 设备是如何收到来自苹果推送服务器发来的消息呢(似乎这和邮箱收信差不多?),应该不可能是轮询或者建立长连接吧。

    20 条回复    2015-02-13 16:07:35 +08:00
    magicianzrh
        1
    magicianzrh  
       2015-02-12 16:50:22 +08:00   ❤️ 1
    找一个类似这种http://xg.qq.com/
    magicianzrh
        2
    magicianzrh  
       2015-02-12 16:52:47 +08:00
    没打完字就回复了
    这种sdk目前很多的,找一个差不多的
    你可以通过tag呀之类的发

    不过嘛如果你想对某个账号做得好一点么 remote push还是自己搞搞比较好
    yttyhf2006
        3
    yttyhf2006  
       2015-02-12 16:57:57 +08:00
    APNS => Apple Push Notification Services

    链接仅供参考
    http://blog.csdn.net/ryantang03/article/details/8482259
    caoyue
        4
    caoyue  
       2015-02-12 19:33:18 +08:00 via iPhone
    TCP 长连接
    加心跳机制
    weisoo
        5
    weisoo  
       2015-02-12 19:42:06 +08:00   ❤️ 1
    IOS设备和苹果官方服务器建立一条长链接,所有软件如果要向IOS设备发送消息,都通过这条链接。
    huanglexus
        6
    huanglexus  
    OP
       2015-02-12 23:11:18 +08:00
    @weisoo 这个连接是只要联网就一直建立?
    huanglexus
        7
    huanglexus  
    OP
       2015-02-12 23:12:32 +08:00
    @magicianzrh 我只是对这个实现比较好奇= =
    yellowV2ex
        8
    yellowV2ex  
       2015-02-12 23:23:30 +08:00   ❤️ 1
    @huanglexus 安卓不知道,苹果是直连,因为苹果推送是iOS处理不是app自己去连接的。
    wadezhao
        9
    wadezhao  
       2015-02-12 23:24:58 +08:00
    没看懂你的问题。

    手机扫码,电脑网页有了反应,这明显是手机向Server提交了信息,然后Server再“PUSH(姑且这么称呼)”了信息到电脑浏览器上。

    这和iOS如何收到推送,有什么关系?

    另外iOS的推送就是系统维持一个长连接,这个可以搜到很多文章介绍。
    wadezhao
        10
    wadezhao  
       2015-02-12 23:26:39 +08:00   ❤️ 1
    @yellowV2ex 安卓现在官方也有一个推送方案,是模仿苹果,由安卓系统去维持一个统一的长连接。
    可惜这个方案依赖Google框架,所以国内的软件基本上都是各个APP各自为政,国外大一些的软件如果不想放弃大陆市场,也必须有自己的推送方案。
    感谢党,感谢国家………………
    huanglexus
        11
    huanglexus  
    OP
       2015-02-12 23:31:02 +08:00
    多谢大家,作为学完《数据通信与计算机网络》的大三学生居然从未听说过 TCP 长连接,真是不好意思 ~~~~~~~~
    yellowV2ex
        12
    yellowV2ex  
       2015-02-12 23:33:20 +08:00
    @wadezhao google这货也真是的,自己拍怕屁股走了,留下用户和开发商纠结一生
    weisoo
        13
    weisoo  
       2015-02-13 00:25:17 +08:00
    @huanglexus 是的,一直建立
    geeti
        14
    geeti  
       2015-02-13 00:45:18 +08:00
    @huanglexus 需要知道的是,运营商的Service router对idle的tcp链接是有timeout机制的,各个厂商的路由器不太相同,如果心跳时间间隔超过路由器的允许范围,tcp就会被阻断
    mornlight
        15
    mornlight  
       2015-02-13 00:55:17 +08:00
    你说的那个扫码场景,一般是走HTTP的。
    推送使用的当然不会是这个协议。
    dddd1919
        16
    dddd1919  
       2015-02-13 08:48:14 +08:00
    为什么很明显长链接对服务器的压力更小?明明是轮询么,另外像微信扫码那种,用的是长轮询
    zjuster
        17
    zjuster  
       2015-02-13 11:08:23 +08:00
    知乎曾有内部RD简单讲了下微信扫码登陆的产品逻辑。

    现在微信已经不用扫码登陆了,直接iOS Wechat点登陆就行了。
    c742435
        18
    c742435  
       2015-02-13 14:29:08 +08:00
    @huanglexus 有两种方式,轮询和长链接
    通常使用长链接。在长链接无法使用的时候使用轮询。
    记得很久很久以前 也许是ipad4的时代 推送是有选项的。上面写着如果基于长连接的推送不能使用时,可以自选到苹果服务器查询的频率,5分钟一查 30分钟一查什么的。
    standin000
        19
    standin000  
       2015-02-13 15:55:23 +08:00
    @zjuster 网页登陆,不用扫描了吗?
    zjuster
        20
    zjuster  
       2015-02-13 16:07:35 +08:00
    @standin000 我说的是mac 版...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2666 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:21 · PVG 18:21 · LAX 02:21 · JFK 05:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.