分析了微信的mars demo https://github.com/Tencent/mars/tree/master/samples/iOS/iOSDemo/iOSDemo
mars短链接使用总结:
1. UIViewController使用mars接口收发包,实现UINotifyDelegate协议,交给NetworkEvent管理,作为事件的代理,获取回调
要使用mars的接口,只需要创建一个CGITask,调用NetworkService的 startTask接口就可以了
2. 调用了接口,还想需要 实现3个接口,才能作为代理,获得回包处理的回调
1)组包接口requestSendData
2)回包回调处理接口onPostDecode
3)onTaskEnd接口 处理任务结束需要做的刷新和存储
3. NetworkEvent作为NetworkService的代理,发包和收包是由NetworkService完成的
NetworkEvent作为代理通知到调用方,NetworkEvent可以自己实现和增强功能
4. 有三种delegate
1)NetworkDelegate 处理网络发包和回包的回调 由NetworkEvent实现
2)UINotifyDelegate 处理UI 需要 的回调 由自己的UIViewController实现
3)PushNotifyDelegate 处理服务器主动的push的回调 由自己的UIViewController实现 (startTask没有选项加入PushObserver的设置,
这块是在哪里加入的呢?我还没有研究到)
一个ViewController或者View可以同时实现UINotifyDelegate,PushNotifyDelagate。NetworkDelegate是由NetworkEvent实现的,
我们可以实现自己的NetworkEvent。
5. NetworkService实现了NetworkStatusDelegate协议,因此她可以接受到底层网络状态的通知,NetworkService的代理是NetworkEvent
因此网络数据的处理是由NetworkService和NetworkEvent来实现的,网络数据的事件分发是交给NetworkEvent。我们的UI,ViewController
都交给NetworkEvent进行管理
更多认知,感悟,成长干货,技术分享,请关注我的公众号「成为很厉害的人」。