这篇主要介绍ios的和android,wp这款机器还没接触过。
具体技术的实现这我不懂,就随便瞎说一下。
具体产品的设计形式,没时间想那么多,就先这样了。
apple篇
苹果只有一个发送push的方式!
苹果得益于它的封闭环境,很多涉及用户权限、隐私的东西都需要通过才能完成,其中包括push。也就是ios设备上的通知。
所有应用程序的通知(push)都是由苹果统一管理的,在设置页面里面-通知选项便是,这个管理主要是指从服务器官方下发的一些通知,在ios5里面呈现方式包含样式、标记、声音、屏幕锁定显示等。
push内容主要是文字+emoji表情
整个逻辑结构就是:
push后台→自身服务器→苹果服务器→用户手机
而我们设计的时候就需要先获取用户的udid,secret的号码,并且记录其状态,传送到自身服务器中的数据库。
我们的服务器会提交push内容和用户的设备号到苹果服务器,由他们进行下发,所以实际上push是有延迟的,用户接收时间会滞后,并且每个用户之间的收到的时间也不一样的。
因此苹果下发那么多push,手机怎么知道是来源于哪个程序的呢?
每个应用程序都会收到苹果发放的push证书,分测试环境使用和正式环境使用两种,所以要和服务器的人员沟通好到底是哪个开发者帐号哪个应用程序用的push。
注:还有一种通知,就是微博、微信、qq那种消息的通知,它们也是统一走苹果的服务器,但是和上面那种官方推送通知的概念是不一样的。
android篇
android发送push可以通过三种途径去实现
1.最常用的,后台保留一个service进程,和服务器之间保持长连接关系,服务器有消息的时候会直接推送到客户端。
优点:不用经过google它们的服务器,由我们自身的服务器即可完成。
缺点:后台长期跑进程,耗内存,耗电,耗流量,用户最讨厌
2.通过google官方服务器,这个前提必须是移动设备登录了google 帐号,然后内容是通过google服务器下发的,和苹果类似,不过具体的数据流向和一些细节就不清楚了,没文档研究
优点:不需要后台进程驻留
缺点:除了geek,没什么用户会登录google帐号吧
3.后台隐藏进程。这个是利用android程序可以设定时间自启动和自关闭的特性,比如在程序中设置,30分钟启动程序去检测服务器中的数据,有内容则取回本地,有通知提醒,没有内容则可以自动关闭,一般整个过程也就几秒,用户经常是没有发现的
优点:不需要驻留进程,不耗内存,不耗流量,不耗电,用户想关也关不了
缺点:实时性不足