Android端直接使用MQTT协议与第三方PUSH服务对比

AndroidMQTT使用基于EclipsePaho项目库,Broker使用网上免费的Mosquito服务器。第三方使用Baidu云推送。从以下四个方面对比:

一,到达率对比
         在相同的网络环境(WIFI/GPRS),两者基本都能够及时收到,延迟在1S之内,测试中偶现有延时送达的,暂没有发现丢包或收不到的情况.

          二者在被进程管理软件杀死后,默认都无法自动重启,不能继续与服务器进行沟通。要做到死后重生,需要采用特殊处理,如提高Service的优先级,设置Service在内存中的驻留方式,在ServiceStop函数当中重新启动等方法。

二,所消耗的流量对比

        Android端设置心跳间隔为5分钟,测试一个小时,推送6次信息,每次平均20Bytes,检测软件上看共消耗2.3KB,按这个流量算,一个月约需要消耗1.6M的流量。

        Baidu云推送,官方给的数据是,空载流量0.8-1.2M/月。

三,功耗对比

       测试环境:使用同一台手机,仅开启Wifi(排除电话,短信等通知信息对电流的影响),设置心跳间隔为5分钟,测试其间平均发送6次推送,结果如下:

E760(Android4.0)

底电流(平均值)

10分钟平均电流(测试3轮求平均)

30分钟平均电流(测试3轮求平均)

仅开Wifi待机

4.2mA

7.2mA

6.7mA

仅开启MQTT

4.2mA

7.7mA

7.6mA

仅开启百度云推送

4.2mA

7.8mA

7.3mA

    从对比结果看,开启MQTT或云推送,对平均电流的影响不大,平均每日耗电约12~14mAh. 网上资源显示实测移动设备空载耗电每日15-50mAh。WifiGPRS3G不同网络环境可能会稍有差距。

综上:使用MQTT与第三方Push在流量及功耗上没有太多差距,测试过程中MQTT能与服务器建立稳定的长链接,并且从查找的资源看AndroidAPP基本上都是用MQTT直接做Push服务的,没有例子同时与第三方Push联合使用的,因此如果能够自建MQTT服务器的话,完成可以自己实现Push服务。

One thought on “Android端直接使用MQTT协议与第三方PUSH服务对比

Leave a Reply

Your email address will not be published. Required fields are marked *