关于移动端的消息实时推送方案? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dousao
V2EX    问与答

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

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

    场景: 用户 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     Solana     2754 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:07 PVG 17:07 LAX 01:07 JFK 04:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86