iOS 自建通道原理总结

目录

1、背景

2、设计流程图

1.长连通道的建立与初始化

2.网络长连接通道的稳定性如何保证

(1) NAT超时断开长连通道的规避策略

(2) DHCP 续租断开长连通道的规避策略

(3) 重试

3、pushSDK与pushServer建立连接过程

 3.1协议设计

4、通信格式

4.1  监控体系


1、背景

目前iOS已经有原生APNs推送服务,完全有苹果公司维护。对于我们来说,里面任何的操作就像个黑盒看不见摸不着,很多条件是无法控制的,比如高峰期推送消息不及时,到达率不能给出相关数据等。

2、设计流程图

 

 

思考主要问题:

1.长连通道的建立与初始化

长连通道的建立见下面。

长连建立成功后,第一次启动需要向服务端注册,获取服务端用于发push 推送的识别码,即push Token。

2.网络长连接通道的稳定性如何保证

(1) NAT超时断开长连通道的规避策略

由于网络运营商都有相应的NAT超时策略,如果客户端和服务端建立的连接在一定时间内没有数据交换,则会被判定为已废弃的连接,并将其关闭。为了避免这种情况影响Push 长连的存活,注册成功后,为了让TCP长连保持连接,需要使用闹钟模块Alarm Service定期向后台发送心跳。但如果发送太频繁,将会导致高额耗电量,所以心跳间隔时间应该由后端控制。

不同的网络运营商对于NAT超时的间隔有不同的设定,后端需要根据不同的网络类型,下发不同的心跳间隔,在最大程度上保证TCP长连存活的情况下,避免频繁心跳触发的高额耗电。

以下是不同运营商对于NAT超时时间的策略。

地区/网络

NAT超时时间

中国移动3G和2G

5分钟

中国联通2G

5分钟

中国电信3G

大于28分钟

美国3G

大于28分钟

台湾3G

大于28分钟

(2) DHCP 续租断开长连通道的规避策略

由于安卓系统对DHCP的处理存在漏洞—— DHCP租期到了不会主动续约并且会继续使用过期IP。

这个问题导致的问题表象是,在超过租期的某个时间点(没有规律)会导致IP过期,老的TCP连接不能正常收发数据。并且系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值