V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
wangleineo
V2EX  ›  问与答

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

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

    不太明白。如果在manifest里面声明了一个service,安装app后这个service就会一直运行?
    注册什么广播事件呢?谁来发送事件?
    fofoone
        8
    fofoone  
       Nov 5, 2014
    @wangleineo
    安装app后这个service就会一直运行?
    收到广播启动,或者开启应用启动。
    什么广播事件?比如,网络状态切换,来电去电,电量状态,系统启动,屏幕打开关闭等。
    谁来发?这种一般是系统发。
    如果想多个 app 共享长连接,一般会自定义广播,互相唤醒。
    Androilly
        9
    Androilly  
       May 21, 2015
    大多数都是通过第三方推送来达成,比较好的是个推推送
    Hxqing
        10
    Hxqing  
       Nov 28, 2016
    国内的 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
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5611 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 08:26 · PVG 16:26 · LAX 01:26 · JFK 04:26
    ♥ Do have faith in what you're doing.