移动端离线消息推送之经验总结

  ToTalk是一款纯移动端电话类产品,主要面向海外和海内外的商旅用户。用于解决跨国之间一卡走天下的问题,能够在全球任何一个地方实现接听和拨打没并且没有漫游费。

  由于客户端保活的问题,大部分开发者都有所了解,Android这部分为了省电,应用系统在后台的时候会收不到系统消息。

  我们在实现这些功能的时候,为了能够大部分的将消息能够推送到客户端,就需要做很多工作,因此我们团队在设计的时候,尽可能使用不同手机厂商自己的推送服务。

  其中主要包括小米,华为和Google以及苹果的推送。国内厂商目前只有华为和小米,国外三星手机目前没有自己的推送,Android方面在国内网络测试推送的数据,总结是小米的推送到达率会比华为的高很多。

  小米手机在提供到达率的基础上需要手机进行设置一些操作,比如小米的“神隐模式”,以及“自启动”等相关操作。而华为的部分手机会在息屏的情况断网。当因此在推送上就需要开发者对不同手机进行一定的了解。

  由于ios的手机是最好解决的,主要采用苹果自身的推送方式,到达率也很高,目前测试下来几乎没有不到达的。

  但是Android方面在推送的时候就需要我们有一定的策略,比如华为手机采用华为推送,小米手机采用小米推送,而除了华为和小米手机之外则只能采用华为或者小米和Google推送,而Google推送则需要要求手机能支持谷歌服务才可用(这是中国的伟大的墙导致的)。

  那么小米和华为自身的推送方式我们是比较容易实现的,那么对于除了这些手机之外的呢?

    ToTalk的实现主要根据判断国内还是海外进行实现,因为ToTalk主要面向全球用户,而大部分海外用户手机都是能够支持谷歌服务的。

  对于海外的推送小米手机自身有一定的支持,但是不知道为何最近小米推送的服务,海外有问题,也联系过他们的支持,他们也说确实是存在一定的问题,导致海外用户用小米推送是到达不了的。

  因此判断是海外Ip则选择Google推送,国内Ip则看手机是小米则使用小米推送,华为使用华为推送,其他使用小米推送。

  服务器设计方面,要保存客户端最近一次的终端信息,以及所支持的推送方式和不同推送服务的账户信息。当要选择推送消息到客户端的时候,服务器可以查找到当前客户端的推送方式和推送的账户信息,然后选择相应的推送服务即可。

  但是由于国内网络不能到达Google服务,则推送Google的服务器需要使用海外节点,也就是需要推送服务在海外部署节点,由海外节点使用Google推送服务接口即可。

  其实在实现客户端的消息推送上并不是特别复杂,主要是我们要熟悉不同手机操作系统的限制的使用方式。

你可能感兴趣的:(移动端离线消息推送之经验总结)