博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ANDROID 推送到底哪家强
阅读量:2259 次
发布时间:2019-05-09

本文共 1553 字,大约阅读时间需要 5 分钟。

之前在群里有同学问我关于推送的一些问题,解答之后我觉得这个话题还挺有用,因为几乎大部分人都会遇到这个问题,那姑且就写篇文章总结给你们吧。

1. 为什么要用推送?

推送功能可谓是现如今任何一个 App 的必备功能,因为每天可以推送消息,提升日活啊,用户长久没打开了,推个消息就把用户召回了啊。

一般来说推送都是系统来做的,比如 的推送是苹果自己做的,系统级别的,任何时候都可以推送给用户。

而 Android 的推送本来 自己也有一套推送服务,也是系统级别的,叫做 GCM ,Google Cloud Messaging,但是众所周知,Google 的服务在国内根本没法使用,也就意味着我们不得不用第三方的推送服务。

2. 为什么要使用第三方推送服务?

因为 GCM 在国内的限制,所以这块也就是一个机会了,国内因此也衍生了很多推送服务公司。

大部分公司都会选择使用第三方推送服务,因为推送这个事自己做还挺麻烦的,需要服务器资源,开发以及后台管理、统计等,对于一些大公司来说本身有资源做这个事,而且出于安全考虑也会优先自己做,但是大部分中小型公司是不会浪费资源在这块的,尤其创业公司,还是把资源用在自己的核心业务上更急迫,所以大部分中小型互联网公司都会选择第三方推送服务。

3. 有哪些第三方的服务?

目前来说做的比较好的推送服务大概有小米推送、腾讯信鸽推送、百度推送、极光推送、友盟推送等。这些推送服务大都有以下特点:

免费

当然部分公司也有收费的,号称更稳定、推送到达率更高,但大部分都还是用的免费版。

服务会被杀死

由于 Android 系统的机制,后台推送 Service 会被各种主动的或是被动的行为给杀死,而服务一旦被杀死,意味着就接收不到推送消息。

多个 app 共用一条推送通道

什么意思呢?就是如果有多个 app 都使用了同一家推送服务,那么这些 app 共用一条消息通道,即使你家的 app 推送服务被杀死了,那么只要用户打开了其他集成该推送服务的 app ,你家的推送就能接受到消息。

4. 哪家推送更好呢?

每家的推送服务都号称推送到达率很高,号称自己家的推送服务更不容易被杀死,号称自己的推送更稳定更有保证,然而我要说的是,各家都差不多,技术上你能实现的,别家一样能实现,到达率也都差不多,据我观察平均推送到达率能达到 70% 左右都算不错的了,那么到底该怎么选择呢?

有一点比较特殊的是?有些推送服务有自己家品牌的手机,比如小米有自己的手机,而在 MIUI 系统上小米推送是作为系统级的服务,不会被杀死,毕竟一家人,总不至于傻到把自己家的服务给干掉吧?所以这就是一个巨大的优势了。类似的华为推送服务在自己家的手机系统上也不会被杀死。

各大手机厂商都宣传自己家的手机市场份额第一,然而我要说的是如今市场上的 Android 手机只分小米手机跟其他手机,什么意思?就是小米手机是目前市场份额第一,而且远远领先其他手机,这个在我们自己家 app 的数据上看就是这样,而这里有一份友盟发布的 Android 设备活跃的排名数据

方便大家查看我截了张图:

上图可以看到,前十排名小米占了 7 席,总体小米手机确实是市场份额第一,其次是三星、华为紧随其后,接着、vivo、魅族平分秋色。

所以小米手机的市场份额,加上小米推送在 MIUI 上不被杀死这一大特性,致使选择小米推送是第一选择。

5. 总结

所以综合下来,如果你的 app 想省事的话那么建议直接集成小米推送。 

如果你的 app 想要把推送更优化下,那么可以集成多个推送服务,针对不同的渠道用不同的推送,比如小米渠道用小米推送,华为渠道用华为推送,其他渠道用信鸽推送等,但是这种也比较麻烦,具体怎么做看你们自己的权衡了。

全文地址:

转载地址:http://ppfcb.baihongyu.com/

你可能感兴趣的文章
整数的最大值和最小值
查看>>
如何居中“位置:绝对”元素
查看>>
插入,在PostgreSQL中重复更新吗?
查看>>
如何将当前更改提交到git中的不同分支[重复]
查看>>
如何使git接受自签名证书?
查看>>
如何以类似JSON的格式打印圆形结构?
查看>>
使用HTML5的自定义数据属性的jQuery选择器
查看>>
xcode选择活动的开发人员目录错误
查看>>
如何使用包含属性名称的变量检查对象属性是否存在?
查看>>
是否可以将Java 8用于Android开发?
查看>>
Akka的好用例[关闭]
查看>>
如何右对齐弹性项目?
查看>>
Xcode 6 Bug:Interface Builder文件中的未知类
查看>>
Java中的getPath(),getAbsolutePath()和getCanonicalPath()有什么区别?
查看>>
如何在JavaScript / jQuery中查找数组是否包含特定字符串? [重复]
查看>>
错误时自动退出bash shell脚本[重复]
查看>>
如何使用Twitter Bootstrap获得中心内容?
查看>>
为什么('b'+'a'+ +'a'+'a')。toLowerCase()'banana'的结果?
查看>>
在函数调用中,星号运算符是什么意思? [重复]
查看>>
将整个ASCII文件读入C ++ std :: string [重复]
查看>>