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

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

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

    不太明白。如果在manifest里面声明了一个service,安装app后这个service就会一直运行?
    注册什么广播事件呢?谁来发送事件?
    fofoone
        8
    fofoone  
       2014-11-05 10:17:48 +08:00
    @wangleineo
    安装app后这个service就会一直运行?
    收到广播启动,或者开启应用启动。
    什么广播事件?比如,网络状态切换,来电去电,电量状态,系统启动,屏幕打开关闭等。
    谁来发?这种一般是系统发。
    如果想多个 app 共享长连接,一般会自定义广播,互相唤醒。
    Androilly
        9
    Androilly  
       2015-05-21 10:59:11 +08:00
    大多数都是通过第三方推送来达成,比较好的是个推推送
    Hxqing
        10
    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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   963 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:24 · PVG 04:24 · LAX 12:24 · JFK 15:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.