一个 android 小白问题:国内的 Android 的推送一般是怎样实现的?

2014-11-05 01:23:03 +08:00
 wangleineo
似乎在国外都是用Google的Cloud Message。国内应该没办法保证连接,应该怎么办?
如果每个需要推送的应用都开service和服务器保持连接,那是不是会开很多service?
怎样保证这个service一直运行?如果安装好以后从未启动app,能收到推送吗?
另外,iOS上有Notification Center, 安卓手机接收到notification的形式是怎样的?
4059 次点击
所在节点    问与答
10 条回复
LMkillme
2014-11-05 01:30:27 +08:00
极光推送~
iOS上面也不是用通知中心的,用Apns或者极光推送
fofoone
2014-11-05 01:33:21 +08:00
gcm 别想了,就是没被墙,国产也被阉割。
国内用自己做推送,scoket 长连接 开个service,单机几十万应该不是问题。要不就是第三放推送 极光 小米 umeng 之类 都是长连接实现,省事。
如何保证service一直运行?一般通过注册各种广播事件(BroadcastReceiver)收到广播后检测service和链接状态。已安装未启动看你注册广播的形式。
notification的形式是怎样的?自己下个 demo 看吧。问的太模糊。
LMkillme
2014-11-05 01:33:39 +08:00
由于安卓的内存管理机制,安卓可以一直存活在后台,只要不被杀死就可以保持socket链接,所以没有推送的问题,在后台也可以通过socket发送消息,但是socket耗电,不是很好的实现方式,用推送方式还是比较好的解决方案。iOS就没办法只能用Apns了
fofoone
2014-11-05 01:41:28 +08:00
@LMkillme
别逗,第三方推送都是 scoket长连接 实现。一般都是经过 线程优化 TCP内存优化,链接回收优化等等(主要是服务端)...
LMkillme
2014-11-05 01:48:04 +08:00
@fofoone 我说的就是第三方~自己可以实现,但是不推荐呀。
LMkillme
2014-11-05 02:09:41 +08:00
@fofoone 额,我有什么方面说错了么?怕误导别人,我推荐楼主用第三方推送啊,我上面说的有啥不正确的?请指教~
wangleineo
2014-11-05 02:15:09 +08:00
@fofoone 一般通过注册各种广播事件(BroadcastReceiver)收到广播后检测service和链接状态。已安装未启动看你注册广播的形式。

不太明白。如果在manifest里面声明了一个service,安装app后这个service就会一直运行?
注册什么广播事件呢?谁来发送事件?
fofoone
2014-11-05 10:17:48 +08:00
@wangleineo
安装app后这个service就会一直运行?
收到广播启动,或者开启应用启动。
什么广播事件?比如,网络状态切换,来电去电,电量状态,系统启动,屏幕打开关闭等。
谁来发?这种一般是系统发。
如果想多个 app 共享长连接,一般会自定义广播,互相唤醒。
Androilly
2015-05-21 10:59:11 +08:00
大多数都是通过第三方推送来达成,比较好的是个推推送
Hxqing
2016-11-28 11:20:16 +08:00
国内的 Android 推送多数是靠第三方推送实现的。
以云巴( Yunba.io )为例,客户端集成了云巴的 Android SDK ,服务端可通过云巴的 SDK 或使用 RESTful API ,向 Android 客户端发消息。
1.后台保持长连接。 Android SDK 会启动一个后台的 Service ,创建并保持到云巴服务器的长连接,从而保证了消息推送的实时性。
2.确保消息的送达。云巴 SDK 支持 离线消息 的功能,可保证消息送达客户端。

楼主上述的问题,或许下个 Demo 试试看就能解决~
Android : https://yunba.io/docs/android_demo_quick_start
iOS : https://yunba.io/docs/ios_demo_quick_start

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

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

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

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

© 2021 V2EX