一个 android 小白问题:国内的 Android 的推送一般是怎样实现的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wangleineo
V2EX    问与答

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

  •  
  •   wangleineo 2014-11-05 01:23:03 +08:00 4427 次点击
    这是一个创建于 4000 天前的主题,其中的信息可能已经有所发展或是发生改变。
    似乎在国外都是用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     Solana     1339 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 17:12 PVG 01:12 LAX 10:12 JFK 13:12
    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