推送消息怎么写( 二 )


下面我来介绍几种常见的方案:1)轮询:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等 。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池 。
2)SMS:在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图 。这是一个不错的想法,我就见过采用这个方案的应用程序 。
这个方案的好处是,可以实现完全的实时操作 。但是问题是这个方案的成本相对比较高,你很难找到免费的短消息发送网关,关于这个方案的实现,可以参考如下链接:/apis/mobile-java-push/ 。
3)持久连接:这个方案可以解决由轮询带来的性能问题,但是还是会消耗手机的电池 。Apple的推送服务之所以工作的很好,是因为每一台手机仅仅保持一个与服务器之间的连接,事实上C2DM也是这么工作的 。
不过这个方案也存在不足,就是我们很难在手机上实现一个可靠的服务 。Android操作系统允许在低内存情况下杀死系统服务,所以你的通知服务很可能被操作系统Kill掉了 。
前两个方案存在明显的不足,第三个方案也有不足,不过我们可以通过良好的设计来弥补,以便于让该方案可以有效的工作 。毕竟,我们要知道GMail,GTalk以及GoogleVoice都可以实现实时更新的 。
? 采用MQTT协议实现Android推送MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案 。我们可以从这里下载该项目的实例代码,并且可以找到一个采用PHP书写的服务器端实现 。
架构如下所示:wmqtt.jar 是IBM提供的MQTT协议的实现 。你可以从如下站点下载它 。
你可以将该jar包加入你自己的Android应用程序中 。Really Small Message Broker (RSMB),他是一个简单的MQTT代理,同样由IBM提供 。
缺省打开1883端口,应用程序当中,它负责接收来自服务器的消息并将其转发给指定的移动设备 。SAM是一个针对MQTT写的PHP库 。
你可以从这个下载它.send_mqtt.php是一个通过POST接收消息并且通过SAM将消息发送给RSMB的PHP脚本 。实例代码:可以从GitHub上下载实例应用 。
运行该应用以后,通过手机浏览器访问/demo/android-push/,在第一个输入框输入设备ID,在第二个输入框输入想要发送的消息内容,按下“Send Push Message”按钮,你就应该可以看到手机上收到了通知了 。你也可以从这个GitHub地址上下载android-push源代码,它包含了send_mqtt.php脚本 。
【推送消息怎么写】? 采用XMPP协议实现Android推送这是我在项目中采用的方案 。事实上Google官方的C2DM服务器底层也是采用XMPP协议进行的封装 。
XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测 。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息 。
androidpn是一个基于XMPP协议的java开源Android push notification实现 。它包含了完整的客户端和服务器端 。
经过源代码研究我发现,该服务器端基本是在另外一个开源工程openfire基础上修改实现的,不过比较郁闷的是androidpn的文档是由韩语写的,所以整个研究过程基本都是读源码 。它的实现示意图如下:androidpn客户端需要用到一个基于java的开源XMPP协议包asmack,这个包同样也是基于openfire下的另外一个开源项目smack,不过我们不需 。
5. APP运营中,推送消息怎么做能产生最大效果 想消息推送达到预期效果的最大化,需要掌握以下5个W:1.Who: 推送对象 2.What: 推送内容 3.When: 推送时间 4.Where: 推送场景 5.Why: 推送原因 详细内容查看原文网页链接要想做到以上5个W,运营人员需要充分了解用户的行为习惯以及兴趣偏好,这里推荐一款免费的用户行为数据采集分析工具Cobub Razor 。