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

2016-08-10 16:23:15 +08:00
 dousao

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

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

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

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

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

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

在线(后台活着的)的时候就主要靠服务端 push ,如果你对实时性要求特别高的话可以试试别的 IM sdk ,走实时消息。
akira
2016-08-10 23:56:16 +08:00
@dousao 再怎么消耗资源也就是 10s 而已。你又不需要一天 24 小时开着轮询的咯
zado
2016-08-11 09:12:56 +08:00
我没有发现这个场景那里需要实时推送。商家需要确认,那商家自然会主动去拉消息。如果确认不是很重要,那客户就不必等商家确认,最多客户把自己的支付结果给商家看一下就可以了。
xialiwei
2016-08-11 13:18:15 +08:00
@zado 有道理 现在都是 支付完成后 给别人看一眼的多 还是要多种线下的行为支持 解决线上的困境
dousao
2016-08-11 14:05:31 +08:00
@zado 有道理。
dousao
2016-08-11 14:05:55 +08:00
@iyaozhen 感谢。
iyaozhen
2016-08-11 18:33:25 +08:00
@zado 居然还是线下交易 23333 @dousao 很多时候不能光靠技术解决问题啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/298426

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX