huanglexus
V2EX  ›  iOS

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

  •  
  •   huanglexus · Feb 12, 2015 · 5606 views
    This topic created in 4286 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    不过嘛如果你想对某个账号做得好一点么 remote push还是自己搞搞比较好
    yttyhf2006
    yttyhf2006
    Feb 12, 2015
    3
    APNS => Apple Push Notification Services

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

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

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

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

    现在微信已经不用扫码登陆了,直接iOS Wechat点登陆就行了。
    c742435
    c742435
    Feb 13, 2015
    18
    @huanglexus 有两种方式,轮询和长链接
    通常使用长链接。在长链接无法使用的时候使用轮询。
    记得很久很久以前 也许是ipad4的时代 推送是有选项的。上面写着如果基于长连接的推送不能使用时,可以自选到苹果服务器查询的频率,5分钟一查 30分钟一查什么的。
    standin000
    standin000
    Feb 13, 2015
    19
    @zjuster 网页登陆,不用扫描了吗?
    zjuster
    zjuster
    Feb 13, 2015
    20
    @standin000 我说的是mac 版...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1911 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 09:12 · PVG 17:12 · LAX 01:12 · JFK 04:12
    ♥ Do have faith in what you're doing.