现在基本上很少有app没有继承推送功能了。虽然app推送消息满手机飞,因此很多用户把app的推送大都关闭了,以减少流量损失和推送骚扰,但是仍有用户对喜欢的应用开启推送功能,特别是使用期间(如:购买商品成功–收到货物前)。然而推送是最好的推广和留住及激活老用户的手段。不能因为部分关闭推送功能就放弃这个免费的推广手段,确实无节制的推广也让人反感。极软推送很有必要,那么咱们就介绍下著名的第三方推送平台:个推。
貌似个推以前是完全免费的,机会均等的。现在也开始收费了,见个个推网站服务介绍。
可以看到,注册用户500万以下,个推免费。这个还是比较人性化。若一个app注册人数500万以下说明,他所在公司还在创建期或早期发展期。给他们一个发展时间是应该的。若公司真做大了再出点费用也是可以的。最关键的是,在下午4点到晚上8点之间,个推没有限制免费用户的消息推送。我调查发现,有的推送平台在推送高峰时会扔掉免费用户的消息,这样的免费不用也吧!毕竟有时间有,有时间没有的推送没有什么价值。
iOS10之前,个推的集成非常简单。iOS10之后,个推的集成和证书配置复杂多了。我遇到一堆问题都和他有关。
先介绍下推送使用的一个重要原则,这个原则是我在做曹操专车时,领导总结出来的:第三方推送不能参与业务。因为第三方推送的服务器就那么几台甚至有的只有一台主推送服务器,用户却是千万甚至亿级别,各种手机类型差异极大,权限限制五花八门。用户关闭推送收不消息是很正常的问题,用户可不管什么原因,出了问题都怪商家。若你的业务完全依赖产生的问题多严重可想而知。最大的问题是在下午4点和晚上8之间,推送消息使用高峰时,推送服务器负担十分严重,甚至阻塞,甚至消息丢失。有的消息半个小时甚至更久才能收到。在做曹操专车时,遇到一次,个推服务器被攻击,乘客收不到接到推送消息,司机没有办法发呆了半小时,业务中断了。可以看到业务完全依赖第三方推送的弊端有多大。公司痛定思痛,总结出第三方推送不能参与业务,只能当推广和公告使用的结论。后期全部换成自己的socket长连接推送消息及https请求确认消息。
以前我在最鲜到那家小公司时从个推换成百度云推送,腾讯云推送。结果测试的结果推送1条消息,8个测试机立即收到,1个测试机几分钟后收到,最后一个手机测试机器永远没有收到消息。这个是其中的一次简单的测试就可以看到使用第三方的推送多么不靠谱。2013年开始做app( 做的第一个app是ccms),还带了一个同事学习ios开发。2014年做最鲜到app,在前期预研时,选择的方案是长连接,我经过一个月的研究已经实现了sokect连接通信。以前我负责华为 AnyOffice(现在叫 AnyOffice Agent)的push service开发,就是 socket方面的开发,当时没有把相关代码搞出来。但是自己写实现socket比较快些,毕竟写过这方面的代码。但是相关iOS的socket开源框架还很少,我们也不知道。后来大老板要求一个月的时间做出第一版本的app。我建议使用socket,但是安卓和服务器方面没有这方面的人才,就使用了第三方推送的方案。当时我家里有紧急的事情,回家办理事情去了。我回来时他们加班加点真的做出来了。但是由于完全采用第三方推送外卖订单,结果可想而知。消息不稳定,有的人收不到或抢不到订单,由此出现的问题很多都无解。后期大力拓展市场,扩展app的功能。业务以及模式上还是“老一套”,技术上忽视最根本的消息推送问题。结果在A轮融资失败,而倒闭。详细见众包物流有多难?“最鲜到”因资金链断裂倒下了,幸亏我2015年7月就离开了那个项目,去做吉利做曹操专车了,不然可能和他们一样连工资都拿不到,只能抱着一台电脑回家了。痛定思痛,我在做曹操专车司机段时使用的是我自己写的socket,保证了app健康运行,虽然前期也有问题,但是随后就逐渐稳定了。可能见一个技术选型可能影响一个公司的业务发展。
想做一个依赖于可靠长连接的服务,那么自己做长连接是绕不过去的坎。既然绕不过去这个坎,那么咱们就踏过去。我开始是自己做的socket连接,但是由于app太多,我只做了苹果的长连接,没有做安卓的长连接,安卓和苹果不能兼容,后来换成了GCDAsyncSocket第三方socket开源组件。这也是对哪些不懂socket的福音吧!他们能解决我们遇到的99%问题,不能解决100%的问题,但是若对他要求不太高的话,已经足够了。连接时,他使用的是毫秒级别无差别快速重连方式,当网络异常时,是否费电,当然网络正常时,耗电两相对较少。《个推使用指南》