Android 推送方案

转载请注明链接:https://blog.youkuaiyun.com/feather_wch/article/details/81605356

推送方案

修改版本:2018/8/13-1(23:25)


1、推送方案有哪些?

  1. 轮询
  2. 长连接
  3. SMS通知
  4. XMPP/MQTT

2、长连接的方案

  1. 目前最佳方案
  2. 客户端主动和服务器建立TCP长连接
  3. 客户端定期向服务端发送心跳包
  4. 有消息时,服务端会通过该TCP连接去通知客户端

3、NAT是什么?

  1. IPv4地址不足或者想通过无线路由器上网,设备就会处于一个NAT设备的后面。
  2. NAT设备会在IP封包通过设备时修改源/目的IP地址.
  3. 家用路由器使用的是网络地址端口转换(NAPT), 它不仅改IP, 还修改TCP和UDP协议的端口号, 这样就能让内网中的设备共用同一个外网IP.

4、NAT超时

  1. 内网IP和外网IP之间的映射因为某些原因被NAT设备所淘汰,从而导致外部设备无法继续和 内网的设备通信(只能找到路由器的外网IP,却已经不知道该和哪个内网设备通信)。
  2. 国内移动无线网络运营商在一段时间内没有数据通讯后, 会淘汰NAT表中的对应项, 造成链路中断。

5、长连接为什么要发送心跳包

  1. TCP本身是长连接的,即使过去几个小时也依旧可以通信。
  2. 心跳包是为了解决NAT超时问题。

保活技术

1、利用系统广播拉活(某些5.0以下机型上有用)

2、利用 JobScheduler 机制拉活,只在5.0及5.1手机上有用。

3、利用闹钟广播拉活,在4.4及以下部分手机上有效

4、采用aidl双进程守护互相监听,一个被杀后立即拉活,在5.0以下绝大部分手机上有效

5、锁屏单像素Activity

结果

1、通过1000条数据涵盖了Android5.0-Android8.0,小米,华为,三星,oppo/vivo,金立等各种机型的测试结果。

  1. Android 6.0以下大部分机型是有效的。
  2. Android 7.0/8.0 绝大部分机型都是无效的,且后台进程无法活过20分钟。
  3. oppo/vivo这两家厂商进程保活最困难,小米和三星比较宽松。其他的机型居中。
  4. 除了厂商加入白名单,没有其他真正可行的办法。
  5. 这些办法只能是一种优化。

参考资料

  1. Android推送技术研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值