用手机怎么做app,如何做手机APP
推送服务已经是APP的标配。推送服务可以使用第三方服务商,也可以选择很多开源技术。
目前推送主要分为两大块,Android推送和ios推送,讨论如下:
1. Android推送
由于安卓手机没有系统限制,APP进入后台后也可以运行服务。所以安卓推送可以建立在长连接的基础上,这就注定了安卓推送服务器不同于普通APP的后端。在技术细节方面,架构也有所不同。好在现在很多开源软件都可以轻松推送。
以深度开源推送软件gopush-cluster为例,说明Android推送服务器的一般架构。
猎豹移动的开源推送软件Gopush-cluster已经广泛应用于下一个业务:
微视、猎豹浏览器热剧推荐、追剧提示;
推送游戏事件
手机助手APP推荐和广告;
医生实时推荐,索要学生手册实时信息;
在电脑毒霸(网络护肤,升级提示)的指挥下,漏洞泡泡等。
手机助手实时游戏和广告推荐;
PC上的WEB猎豹浏览器
感谢xqdz老师的成功回答,以及与gopush-cluster的架构师xqdz老师探讨技术。gopush-cluster的设计整理了很多不可理解的地方。xqdz是一个英俊的建筑师
以下gopush-cluster描述来自xqdz老师的博客,确定信息真实可靠。
Go push集群架构图:
主要分为三个模块进行开发。彗星/网页/消息。
(1)彗星
主要负责消息排队、消息推送以及与客户端的连接维护;因为整个系统是按照消息ID顺序的原则获取消息的,所以推送消息后,需要在comet中排队,启动RPC,然后保存在messages中。
)2)消息
接受来自comet模块的消息,comet模块主要负责存储、读取和写入消息,并使其持久化,或者接受来自web模块的读取消息并请求使消息离线。消息意味着可以部署多个节点来承受来自许多彗星的压力。比如不同的Comet使用不同的消息节点,然后Comet也会调用多个消息节点的负载均衡RPC和故障转移(
)3)网络
负责主节点查询、离线消息采集和后台节点管理等。查询节点主要基于客户端的订阅密钥完整性哈希计算连接的彗星节点的地址,因此在连接大容量客户端时,可以分配给多个彗星提供服务;另外,离线消息也是通过web接口返回给客户端,但是消息读取是通过RPC发送给消息模块,尽量扮演单一角色。Web节点是无状态的,因此可以部署多个web节点来实现负载平衡和故障转移。
)4)精简组件
目前消息库主要依靠Redis读写消息。因为SortedSet不支持int64-type Score)我们也开发了支持int64 Score的分支,但是由于时间原因,大量测试没有上线)。然后,通过使用HBase cluster而不是Redis) TODO) 65来使用更安全的脱机消息存储
另外,Zookeeper实现的同彗星故障转移。例如,comet节点1有一个备用节点node 2。如果节点1注册为Zookeeper,由于机器或者其他原因宕机,那么在web层会触发Zookeeper的选择节点2提供服务。
2. ios推送
APNS是苹果推送通知服务(苹果推送服务器)。由于ios系统的限制,大部分APP应用不允许后台运行和连接网络。当app应用程序没有运行时,信息只能通过ApplePushNotification服务(APNS)发送到应用程序。
Apns的推送原理如下图所示。
推送过程包括以下步骤:
1.首先安装有推送功能的APP。公司的设备在有网络的情况下连接苹果推送服务器。在连接过程中,APNS将验证device_token,并在连接成功后保持长连接。
2.提供者(他们自己的服务器)接收要推送的消息,并与推送设备的device_toke相关联。
n被打包在一起并发送到APNS服务器。
3.APNS服务器将推送信息推送到具有指定设备令牌的设备。
4.设备收到推送消息后,通知我们的应用程序,并显示和提示用户(声音,弹出框)。
在接入apns服务的过程中,有两个问题需要注意:
1.服务器连接到apns服务器。空闲一段时间后,apns服务器会自动断开这个连接,然后服务器需要重新连接。
2.发送无效的设备令牌后的处理。
为什么会有无效的device_token?当用户卸载app时,用户的device_token变为无效,这个无效的device_token已经保存在数据库中。向apns服务器推送消息时,如果推送此无效令牌,将会是一个错误响应。
如果有一个错误响应,那么在此之后的所有通知都需要重新发送。过一会儿这个连接会断开,但是断开之前发送的device_token是无效的。所以我们考虑重发的问题。错误响应中返回的通知ID可以帮助我们找出哪个错误,这样我们就可以知道哪些需要重新传输。
此外,APNS的feedbackservice将返回那些已卸载设备的device_token。把这些device_token在数据库里删除,下次就不用再发了,可以节省一些资源。
在网络上找到解决上述两个apns推送问题的开源软件:
1.java: dbay-apns-for-java
2.python: apns客户端
3. 结语
对于创业公司,我一直倡导的架构原则是“尽量使用成熟的第三方服务和软件,我只负责业务逻辑”。
如果没有达到百万级的规模,那就真的没有必要架设自己的推送服务器。而且现在所有的推送软件都缺乏良好的管理背景。例如,我想知道为什么一个用户没有收到推送。是因为推送没有发送,还是发送用户没有收到?你只能在海量的日志中寻找答案。每次遇到这种问题,都是悲剧。
-
我整理了一系列在网上发表的“app后端”文章并增加了运营和架构的内容,出版了《App 后台开发运维和架构实践》这本书,已经在JD.COM、当当、亚马逊有售。
755-79000的购买链接
JD。计算机输出缩微胶片
典当东西
亚马孙
交互式出版网络
天猫
-
打开app的链接后端系列文章总目录,可以查看到我发表过的所有“app后端”原创文章。
【作者】美丽方盒子【qq】190678908【App后端QQ群】254659220【微信微信官方账号】appbackend【新浪微博】@newjueqi【博客】http://blog.csdn.net/newjueqi