推送——Android程序员‘一辈子的痛’!!

项目中有个比较迷你的聊天功能,能够发语音和图片。android

以上是背景。程序员

项目是15年立项的,当时的Android环境和如今有很大不一样。 代码的是用MQTT+Service实现的。自己这些技术没有啥难点,可是这些技术在18年就显得有些不适应了。bash

个人建议:若是项目中有推送需求的话,直接上第三方推送服务,不要尝试本身搞了,自己推送没啥问题,可是主要的问题是进程保活。服务器

客户反馈在华为手机上常常收不到消息通知。经过咱们测试,的确收不了。 我发现咱们的程序被杀死了。因而咱们建议客户把咱们的程序加入白名单。可是这种状况仍是不行,在后台最多坚持5分钟,最终仍是收不到消息。程序信息页面显示程序还在运行,可是就是收不到消息……感受相似程序被“冻结”了。由于再次进入程序的时候,会立马恢复。微信

因而反馈客户,说这是安卓系统限制。可是客户那边祭出杀手锏:“为啥微信就能收到!”测试

我竟无言以对!spa

Leader也坚持要解决这个问题,因而我在应用保活上作一番挣扎!code

我作了一下尝试: 播放静音音频,常驻通知栏,一像素Activity,息屏后把程序调到前台……进程

最终的结论是只有“息屏后把程序调到前台”这个有点做用,华为手机上会显示高费电应用的提示。可是也就坚持了不到一个小时,就会被“冻结”。图片

最终——放弃!

咱们选择了使用第三方推送服务,首先考虑的是手机厂商渠道。像是小米,华为,魅族的推送都是走系统通道的。

测试结果是程序被杀死也能收到推送。在当前国内的Android手机环境,App在后台根本不能‘独活’。除非你是微信QQ这样的,或者拉帮结伙使用极光个推这种能够相互拉活的,或者找大哥照着,接入官方推送渠道。

最后,期待统一推送联盟早日上线,拯救咱们芸芸安卓程序员。

对了,我使用的是腾讯信鸽,在早8点晚7点左右消息延迟很大(超过半小时),甚至有丢消息的状况,其余时间接收正常。给他们的技术发邮件2天了都没回,打算换别家了。

腾讯信鸽是有小米华为魅族的通道的,因此我最早尝试的是信鸽。目前信鸽和个推比较,信鸽的效果仍是比较好的,加了白名单在华为手机上也就坚持个3-5分钟,而后就收不到了。若是信鸽的服务器出现瓶颈,咱们本身服务器就会尝试经过厂商通道再推送。信鸽能够一次性接入小米华为魅族的通道,比较方便。

刚才看一下魅族推送,魅族推送支持小米和华为通道,可是魅族的实名认证好麻烦,不像华为,支付宝受权一下就能够了。因此等实名认证过了,再试一下魅族推送。

在魅族推送的说明文档中看到了一下内容:

二 统一推送配置
    AndroidManifest 配置
     <!-- 统一推送配置 -->
     <receiver android:name=".UpsReceiver">
     <intent-filter>
     <!-- 接收 push 消息 -->
     <action android:name="com.meizu.ups.push.intent.MESSAGE"
    />
     </intent-filter>
     </receiver>
复制代码

难道是传说中的‘统一推送’?

忽然有点小激动!!!

相关文章
相关标签/搜索