当前位置: 首页 > 科技观察

iOS开发——App架构抽象协议

时间:2023-03-12 06:56:01 科技观察

从架构设计层面来说,一个终端,尤其是一个成熟的终端,应该有自己的规范,小到页面跳转、服务请求,大到具体的业务功能,比如生成订单、取消订单,查看订单等。一方面,制定了统一的协议后,不仅可以约束各业务线开发同学的开发行为,统一代码风格,还可以增强团队成员的协作和凝聚力.另一方面,统一开发行为后,新功能的增加、Bug修复、查询问题等都非常有帮助,大大提高了开发效率。App架构组最重要的功能之一就是统一App架构,让业务开发同学在统一的架构下塑造端到端的产品,从而提高业务开发的效率,保证业务的稳定性使用。本着这个原则,这一年来我一直在探索与App架构相关的各种技能。协议是我发现最能体现App架构意义的一项关键技术。使用好协议并加以推广,可以使业务开发效率成倍提高。一般来说,App中的协议类型可以任意发散,只要能复用,用协议一句话总结就可以了。当然,我们都是有抱负的人,应该创造一些更通用、更抽象、更值得复用的协议。比如iOSSDK中的urlscheme就是这样一个典型的例子。iOSURLSchemeURLSchemes是苹果公司给的一种跳转到系统应用或者跳转到别人应用的机制。同时,它还可以在应用程序之间传递数据,实现一些特定的功能。您可以像理解网页的URL一样理解iOS应用程序的URL。比如微信的urlschemeweixin://WeixinMomentsurlschemeweixin://dl/moments看起来是不是很方便?在其他应用中,可以这样跳转到微信小程序(如果安装了))NSURL*url=[NSURURLWithString:@"weixin://"];[[UIApplicationsharedApplication]openURL:urloptions:@{}completionHandler:^(BOOLsuccess){}];每个应用都可以创建自己的一个或多个urlsscheme,只需要配置info.plist文件,然后通过应用管理中心【UIApplicationsharedApplication】实现应用之间的通信。同样,我们可以将这个思想应用到其他抽象模块中。在每个抽象模块中,我们使用一个协议来指定它的使用规则和支持的功能。当它开放给调用者时,只要遵循协议规则,使用抽象模块提供的API接口,就可以调用或使用该模块提供的服务。由此我们得出结论,通过协议来抽象一个模块需要两个重要的组件:协议+协议管理中心。通用协议scheme://service/actor?params=\{\"xxx\":xxx\}&origin=xxx在App架构中,页面导航框架是一个非常重要的组件,直接决定了页面的组织形式目前的App和Style,一个好的页面导航框架也可以让业务开发者在新建页面和页面跳转上有极好的体验。从协议的角度,我们可以约定这样一个页面跳转协议:页面跳转协议page://action?params=\{\}&origin=xxx//跳转原生页面page://goto?params={"page_name":"xxxx","data":{"xxx":"xxx",...},"navi_type":0|1,"anime_type":-1|0|1|2|3|4,"success_callback":"xxxxxx","failure_callback":"xxxxx"}&origin=xxx//跳转到h5页面page://act_web?params={"page_name":"xxxx","data":{"xxx":"xxx",...},"navi_type":0|1,"anime_type":-1|0|1|2|3|4,"success_callback":"xxxxxx","failure_callback":"xxxxx"}&origin=xxxManager需要提供的接口有://跳转到原生页面//跳转到h5页面服务请求协议//@TODO可以继续拆分service://modulename/servicename?params={}&origin=xxxBridge桥接协议//bridge是具体方案,bridgename是bridgejs库支持的apibridge://bridgename?module=xxx&method=xxx&args=\{\}&origin=xxx