V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dousao
V2EX  ›  问与答

关于移动端的消息实时推送方案?

  •  
  •   dousao · 2016-08-10 16:23:15 +08:00 · 4348 次点击
    这是一个创建于 3012 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景: 用户 APP 发起付款请求后,服务端接受付款请求,并把结果返回给商家 APP 。要求实时,延迟不超过 10S 。

    看了下几个主流做推送的,比如百度,腾讯的 SDK ,只强调到达率,而且有时候到达率才%90 几,有时候几个小时才推到用户,支付订单这种需求比较强调实时和百分百到达,不能用户使用 APP 付完款了,还在傻傻等商家确认。

    现在是不是没有可以做到基本实时的推送的 SDK 呢?

    如果自己实现的话,有没有已经造好的轮子?(其实主要是想问这个,类 python , node.js 实现的,我本人做 C++好几年, C++实现这种需求太重了,不太想用。)

    16 条回复    2016-08-11 18:33:25 +08:00
    xingwing
        1
    xingwing  
       2016-08-10 16:28:01 +08:00
    ejabber
    gamexg
        2
    gamexg  
       2016-08-10 16:48:00 +08:00 via Android
    用过 Socket.io , nodejs 写的,有 python java 库。
    不过这个不支持持久化,有持久化需求要自己实现。
    2225377fjs
        3
    2225377fjs  
       2016-08-10 17:15:38 +08:00
    感觉楼主说的更多的是业务方面的需求,不同的轮子在不同的业务场景下表现肯定也有差异。。。另外。。要实现这种业务,只是上网找点轮子,低成本搭起一个能用的估计还是容易,但是想要好用,就比较难了。。。毕竟饿了么,各大 app 的外卖类似的功能还是养了不少程序员的呀。
    xialiwei
        4
    xialiwei  
       2016-08-10 17:58:29 +08:00   ❤️ 1
    使用微信推送或者短信吧。
    airyland
        5
    airyland  
       2016-08-10 18:15:26 +08:00
    一般要做两步:发起请求后等待推送以及定时去服务端查询状态。
    iyaozhen
        6
    iyaozhen  
       2016-08-10 18:43:47 +08:00 via Android   ❤️ 1
    到达率 90%已经很好了。主要是保活很难做, iOS 不能在后台运行只能通过 iOSpush ,这东西不能保证呀。 Android 更恶劣,各种 ROM ,而且现在基本上也不能在后台存活,用户手动设置白名单有时也没用。
    dousao
        7
    dousao  
    OP
       2016-08-10 22:17:39 +08:00
    @iyaozhen 那现在有没有什么通用的方法解决 IOS 和 android 两个问题呢?你提到的 android 各种 rom 对于后台存活处理的问题很麻烦啊。
    dousao
        8
    dousao  
    OP
       2016-08-10 22:18:03 +08:00
    @airyland 客户端轮询的话 比较耗资源
    dousao
        9
    dousao  
    OP
       2016-08-10 22:18:47 +08:00
    @xialiwei 短信成本比较高, APP 的话 可能安装在特定的机器上,也不一定允许装微信,而且自己的 APP 如果连推送都实现不了 比较蛋疼啊
    iyaozhen
        10
    iyaozhen  
       2016-08-10 23:15:01 +08:00 via Android
    @iyaozhen 不好解决,目前只能再接入华为 push 和小米 push 。不知道第三方 push 服务有没有集成这两家的。

    还有你这个问题不能光靠 push 。还需要主动去拉取消息。主动拉取不是定时轮训,而是用户有一定操作,比如说打开 APP ,下拉刷新,或者进入订单列表啥的主动去拉取消息。拉取也是拉取 diff 消息,不是全量的(初次登录需要拉取全量)。拉取协议要能支持 tcp/udp/http 多种方式就更好了。

    在线(后台活着的)的时候就主要靠服务端 push ,如果你对实时性要求特别高的话可以试试别的 IM sdk ,走实时消息。
    akira
        11
    akira  
       2016-08-10 23:56:16 +08:00
    @dousao 再怎么消耗资源也就是 10s 而已。你又不需要一天 24 小时开着轮询的咯
    zado
        12
    zado  
       2016-08-11 09:12:56 +08:00
    我没有发现这个场景那里需要实时推送。商家需要确认,那商家自然会主动去拉消息。如果确认不是很重要,那客户就不必等商家确认,最多客户把自己的支付结果给商家看一下就可以了。
    xialiwei
        13
    xialiwei  
       2016-08-11 13:18:15 +08:00
    @zado 有道理 现在都是 支付完成后 给别人看一眼的多 还是要多种线下的行为支持 解决线上的困境
    dousao
        14
    dousao  
    OP
       2016-08-11 14:05:31 +08:00
    @zado 有道理。
    dousao
        15
    dousao  
    OP
       2016-08-11 14:05:55 +08:00
    @iyaozhen 感谢。
    iyaozhen
        16
    iyaozhen  
       2016-08-11 18:33:25 +08:00 via Android
    @zado 居然还是线下交易 23333 @dousao 很多时候不能光靠技术解决问题啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2793 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:42 · PVG 21:42 · LAX 05:42 · JFK 08:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.