移动端推送

推送的目的

主要是出于产品的角度考虑,主要功能如下:

  • 功能提醒:各个APP的系统提醒,比如淘宝的交易物流提醒、支付宝的转账到款提醒、微博的特别关注提醒、点评的订单/订座服务通知等,当然也包括微信QQ的IM消息~

  • 温馨服务/引导:各个APP引导使用核心功能的通知,如消费后邀请写点评、问答邀请……

  • 个性化内容:与“人地时”场景相关的各种偏营销型的推送,主要是基于用户行为偏好的推荐;

  • 兜底/冷启动:平台大型活动通知、社会热点等等。

对于我们 App 目前主要的目的就是功能提醒了

现状

iOS 推送现状

iOS 是使用苹果公司统一的推送机制,APNS(Apple Push Notification service),iOS 上推送的送达率几乎 100%

Android 推送现状

1、GCM(Google Cloud Messaging)Google 在推出 Firebase 云服务之后,更名为了 FCM,谷歌提供的服务国内不能正常使用。
2、国内手机厂商提供的推送,只有华为/小米/魅族 三家公司提供
3、其他的手机就只能使用线程保活手法自己处理消息的收发。主要有 push 和 pull 两大类别,我会在下面详细解释。

  • 国内 Android 推送的送达率参差不齐,使用华为/小米/魅族自带的推送送达率他们声称是100% 但是我们测试发现可以达到百分之八九十左右,还算可行;
  • 使用线程保活在5%以内。这里的送达率是指在从后台杀掉 App 后 App 任然能收到推送。这个送达率是之前我们做过的一个测试得出的结果,有一定的可靠性可以作为参考。

为什么 Android 推送的送达率那么低?

推送原理

无论 Android 还是 iOS 推送最根本的原理都是一样的,很简单就是手机端和服务器保持一个长连接,有消息时服务端就给手机端发一个消息。原理很简单,但是实现方式的不同导致我们的体验有很大的差别

iOS 推送原理

这就是 APNs 的逻辑所在:iOS 自己做个长驻后台保持连接。所有应用,有必要(申请)并且被允许(用户可以改设置)的话,可以通过 APNs 中转到达用户。如下图:

image.png

Android 推送原理

Android 是每个 App 都可以设置自己常驻线程,保持后台长连接。大家可能会说这是好事情,所有都可以保持链接,这样都能收到推送,为什么现在的体验还很差。

因为所有的 App 都可以保持常驻线程,谷歌的初衷是让开发者用到的时候才开启常驻线程,但实际情况是大家无论用不用到都会让App 保持常驻线程,这样手机耗电就急剧增加,这是谷歌和其他手机厂商不能容忍的。手机厂商干脆就显示所有的常驻线程,这就导致了 Android 推送的送达率很低。

Android 推送的解决方案

第一种方案是系统实现方案:轮询(Pull)方式、SMS(Push)方式、持久连接(Push)方式、C2DM云端推送、MQTT协议推送、RSMB推送功能等方式。每种系统实现方案都存在问题:不稳定,性能低,不及时等;
第二种方案是第三方互联网厂商提供的方案,比如极光、友盟和个推等推送平台;
第三种方案是手机厂商的推送方案,比如小米和华为。第二种和第三种方案也存在不稳定,性能低,不及时,耗电等问题;
第四种方案是自建推送平台,包括自建服务器和通讯协议,但是成本和人力物力需求比较大;

下面详细介绍一下第一种方案中的几种实现方式:

  • 轮询(Pull)方式:应用程序隔固定时间主动与服务器进行连接并查询是否有新的消息。
  • SMS(Push)方式:服务器有新消息时,发送1条类似短信的信令给客户端,客户端通过拦截信令,解析消息内容 / 向服务器获取信息
  • 持久连接(Push)方式:客户端和服务端保持长连接,有消息服务端给客户端发消息
  • C2DM云端推送:Cloud to Device Messaging,云端推送。谷歌提供的解决方案,国内用不了。

以上每种系统实现方案都存在问题:不稳定,性能低,不及时等,所以 Android 的推送一般都是同时使用多个方案。目前国内的解决方案普遍使用轮询和保持持久链接的方式。

我们的机制

了解了原理,接下来就要看下我们实现推送的解决方案是什么。iOS 不用多说,肯定是使用官方提供的推送方案。主要是 Android 的解决方案。

目前比较成熟的解决方案

第一种方案是第三方互联网厂商提供的方案,比如极光、友盟和个推等推送平台;
第二种方案是手机厂商的推送方案,比如小米/华为/魅族。第二种和第三种方案也存在不稳定,性能低,不及时,耗电等问题;
第三种方案是自建推送平台,包括自建服务器和通讯协议,但是成本和人力物力需求比较大;

第一种方案优点是使用了相同推送厂商的 App 可以互相借力,缺点是不稳定。
第二种方案比第一种方案相对要稳定些,但是即使是系统级别的推送服务,也不是百分百保证消息送达。这里比较奇葩的是华为推送,华为的推送一些问题,他们自己的技术都搞不定了,下面是他们技术支持给出的描述(原话):

华为手机上:
Emui3.0上,Push广播有很大概率被限制,如: Mate7 3.0版本,荣耀6plus,P7 3.0版本,4X, 4A等。
Emui3.1上,Push广播基本不被限制,但个别型号机型存在问题,如:荣耀5x等。
Emui4.0及以上,Push广播有较高概率被限制,不被限制的机型如:荣耀畅玩4C,荣耀畅玩4X,Mate S,P8 MAX等。
如广播被限制,需要将应用设为开机启动项。所以对于及时性或到达率要求非常高的应用,我们建议应用要考虑替代方案。
后续Push版本,华为将采用新的设计方案,解决被限制的问题,但发布计划待定。

另外,至于限制的问题,其实华为sdk还是能接收到推送消息的,当将消息通过广播发送给应用是,如果手机管家查到该应用处于stop状态,那么会拦截该广播的。

我们的选择

iOS 使用极光推送集成的官方方案
小米手机使用小米系统推送
华为使用华为系统推送
其他的型号手机使用极光推送

ps:不要感觉微信,淘宝这些 App 的用户量大就去选择腾讯和阿里的推送服务,官网在不是很明显的地方说明了他们使用的是同一套技术,但是走的不是同一条推送路线。所以不用想着去蹭微信、淘宝的流量了。被坑过~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355