CN116527577A - 一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置 - Google Patents

一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置 Download PDF

Info

Publication number
CN116527577A
CN116527577A CN202310553471.4A CN202310553471A CN116527577A CN 116527577 A CN116527577 A CN 116527577A CN 202310553471 A CN202310553471 A CN 202310553471A CN 116527577 A CN116527577 A CN 116527577A
Authority
CN
China
Prior art keywords
module
jump
routing
routing component
route
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310553471.4A
Other languages
English (en)
Inventor
熊平
马强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Wuyou Chuangxiang Information Technology Co ltd
Original Assignee
Beijing Wuyou Chuangxiang Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Wuyou Chuangxiang Information Technology Co ltd filed Critical Beijing Wuyou Chuangxiang Information Technology Co ltd
Priority to CN202310553471.4A priority Critical patent/CN116527577A/zh
Publication of CN116527577A publication Critical patent/CN116527577A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

本发明涉及iOS应用开发技术领域,公开了一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置,所述方法包括:响应于应用模块初始化,向UI路由组件发送注册路由表请求,通过静态注册和(或)动态注册进行路由表的注册;设于源模块的源控制器向所述UI路由组件发送路由跳转请求,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转;若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转;若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转;本发明能够实现App外部和内部的统一跳转,为应用开发“高内聚,低耦合”提供了保障。

Description

一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和 装置
技术领域
本发明涉及iOS应用开发技术领域,特别是涉及一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置。
背景技术
iOS是由苹果公司开发的移动操作系统。苹果公司利用沙盒机制来确保用户的隐私安全和信息安全,也就是说,在iOS操作系统中,应用程序(App)之间均相互独立,所有提交到App Store的应用程序都只能访问其声明可能访问的资源。这种机制虽然有效保障了用户的安全问题,但在一定程度上阻碍了App之间的信息通讯,URL Scheme方案应运而生。URL Scheme方案提供了一种引用应用内资源的方法,具体而言,是在app上注册自己的URLscheme并与app进行绑定,该URL Scheme能够从其他app中启动该app,进而实现不同应用程序间的信息共享。基于苹果公司提供的多种视图形态和跳转方法,比如xib、storyboard、自定义Class及push、present等,虽然可以提高iOS应用程序的开发效率和用户体验,但也可能给开发者带来一些困难。首先,对于新手开发者来说,学习和掌握这些视图形态和跳转方法需要一定的学习成本和实践经验。不同的视图形态和跳转方法有着不同的使用场景和适用范围,开发者需要了解它们之间的区别和联系,才能更好地进行应用程序的设计和开发。同时,由于这些技术本身也在不断更新和演进,开发者需要时刻跟进最新的开发技术和最佳实践,才能保持竞争力。其次,使用不当可能会导致代码可读性、维护性和可扩展性等方面的问题。比如,在使用storyboard时,如果不注意视图之间的依赖关系和控制流程,可能会导致storyboard文件过于庞大和复杂,难以维护和修改。另外,使用自定义Class时,如果没有合理的代码结构和设计模式,可能会导致代码耦合度高、重复代码多、难以复用和扩展等问题。最后,由于不同的视图形态和跳转方法之间存在着互相依存和影响,因此在进行应用程序设计和开发时需要综合考虑多种因素,比如应用程序的结构、用户体验、代码可读性和维护性等方面。开发者需要进行全面的需求分析和架构设计,才能更好地利用这些技术,提高应用程序的开发效率和用户体验。
然而,随着App的飞速发展,业务方和用户的体验要求逐步提高,原本的URLScheme不再满足现实需求,为了提高产品的高效迭代,同时保持产品“高内聚,低耦合”的特点,App模块之间跳转的框架需要横向、纵向不同粒度的分层,方便项目长期的有效开发和维护。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置,通过对苹果模块跳转的多种方法和场景进行封装,运用统一协议接口使模块间跳转更加灵活和便捷,本发明URL Scheme协议方案新增可拓展参数控制和认证协议,涵盖了现阶段iOS应用内页所有的跳转方式,是一种更为安全和先进的iOS应用间通信技术,具有更好的用户体验和更好的支持深度链接的特点。
为达上述目的,本发明提出一种UI路由组件,包括:
路由管理类,用于对外暴露接口,对内处理功能逻辑、管理各个子模块的行为,包括但不限于接收应用模块发送的路由表注册请求,接收源控制器发送的路由跳转请求,以及判断能否进行模块内部跳转;
路由表管理模块,用于处理包括但不限于路由表静态注册和(或)动态注册、加载,存储和管理注册的所述路由表,以及查找、获取跳转目标源的行为;
路由跳转核心模块,用于提供跳转接口,处理从源控制器跳转目标控制器的行为;
路由跳转附加模块,用于响应于所述路由表管理模块没有查找到跳转目标源,处理模块外部跳转行为,所述模块外部跳转包括但不限于跳转外部浏览器和外部应用;
路由解析模块,用于处理路由URL解析,包括但不限于当前页面跳转时,对跳转请求参数进行解析。
为达上述目的,本发明还提出一种基于UI路由组件的iOS模块间跳转方法,包括如下步骤:
响应于应用模块初始化,向UI路由组件发送注册路由表请求,通过静态注册和(或)动态注册进行路由表的注册;
设于源模块的源控制器向所述UI路由组件发送路由跳转请求,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转;
若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转;
若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转。
优选地,所述通过静态注册和(或)动态注册进行路由表的注册,进一步包括:
于路由表注册时,所述UI路由组件利用VC视图控制器提供scheme、host和路由表配置信息,路由协议提供协议方法,所述协议方法包括自定义跳转的协议方法;
使用单一静态注册或者单一动态注册,或者静态注册和动态注册两种方式混合使用,且能够实时增加和覆盖。
优选地,所述静态注册包括如下步骤:
响应于访问者编辑所述路由表配置信息,所述应用模块初始化后,调用静态注册路由表接口,所述UI路由组件根据传入的所述路由表配置信息完成路由表的注册;
其中,所述路由表的配置信息包括文件方式和字典方式,所述文件方式支持json文件格式和plist文件格式。
优选地,所述动态注册包括如下步骤:
利用VC视图控制器实现路由协议,所述应用模块初始化后,调用动态注册路由表接口,所述UI路由组件内部动态加载所述路由表配置信息,完成路由表注册。
优选地,所述设于源模块的源控制器向所述UI路由组件发送路由跳转请求,进一步包括:
所述源控制器调用所述UI路由组件的URL请求路由跳转接口,向所述UI路由组件传入标准格式的URL,对参数进行URL Encode编码;
或者,所述源控制器调用所述UI路由组件的Action请求路由跳转接口,向所述UI路由组件主动传入scheme、host和parameters。
优选地,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转,进一步包括:
所述UI路由组件接收所述路由跳转请求,解析所述路由表,并比对跳转请求参数scheme、host;
通过所述UI路由组件查找跳转目标源,若所述路由表中能够查找到跳转目标源,则表示能够进行模块内部跳转。
优选地,所述若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转,进一步包括:
将所述路由协议提供给所述VC视图控制器,判断是否满足跳转协议方法,以及处理参数的协议方法;
响应于满足跳转协议方法,以及处理参数的协议方法,进行当前页面跳转。
优选地,所述响应于满足跳转协议方法,以及处理参数的协议方法,进行当前页面跳转,进一步包括:
对所述UI路由组件跳转请求的参数进行解析,利用创建类方法创建目标控制器并赋值参数,通过系统提供的类方法获取当前的源控制器,按照跳转方式完成从源控制器跳转到目标控制器的操作。
优选地,所述若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转,进一步包括:
若所述UI路由组件没有查找到跳转目标源,表示不能进行模块内部跳转;
通过所述UI路由组件暴露的请求路由跳转接口进行模块外部跳转;或者,通过UI应用程序提供的openURL方法进行模块外部跳转。
为达到上述目的,本发明还提供一种基于UI路由组件的iOS模块间跳转装置,包括:
路由表注册模块,用于响应于应用模块初始化,向UI路由组件发送注册路由表请求,通过静态注册和(或)动态注册进行路由表的注册;
跳转判断模块,用于设于源模块的源控制器向所述UI路由组件发送路由跳转请求,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转;
跳转执行模块,用于执行模块内部跳转和模块外部跳转:
若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转;
若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转。
与现有技术相比,本发明公开的一个方面具有如下有益效果:
本发明构建了UI路由组件,即基于苹果提供的App跳转方法和外链(即外部App之间跳转)进行的封装和功能拓展,以协议注册、接口调度的方式进行全局管理,支持多种注册形式,涵盖所有的跳转方法和自定义跳转,优点在于拓展性强、提高代码复用性、统一跳转逻辑、方便管理链接、改善用户体验、安全性高;本发明可以对于模块与模块之间、页面与页面之间通过UI路由组件进行关联跳转,目标模块的目标控制器实现UI路由组件提供的路由协议,源模块的源控制器关联UI路由组件,并调用UI路由组件接口,通过本发明可实现App外部和内部的统一跳转,为应用开发“高内聚,低耦合”提供了保障。
附图说明
图1为本发明公开的一个实施例之一种UI路由组件的框架示意图;
图2为本发明公开的一个实施例之一种基于UI路由组件的iOS模块间跳转方法的步骤流程图;
图3为发明公开的一个实施例之一种基于UI路由组件的iOS模块间跳转方法的流程示意图;
图4为本发明公开的一个实施例之模块间跳转的框架示意图;
图5为本发明公开的一个实施例之路由表注册概念图;
图6为本发明公开的一个实施例之路由表结构图;
图7为本发明公开的一个实施例之路由协议定义的示意图;
图8为本发明公开的一个实施例之路由跳转概念图;
图9为本发明公开的一个实施例之路由URL的概念图;
图10为本发明公开的一个具体实施例的流程示意图;
图11为本发明公开的一个实施例之一种基于UI路由组件的iOS模块间跳转装置的结构框架图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明公开的一个实施例之一种UI路由组件的框架示意图。如图1所示,本发明公开的一种UI路由组件,包括:
路由管理类300,用于对外暴露接口,对内处理功能逻辑、管理各个子模块的行为,包括但不限于接收应用模块发送的路由表注册请求,接收源控制器发送的路由跳转请求,以及判断能否进行模块内部跳转。
具体地,路由管理类300对外暴露两类接口以及一类数据模型。接口包括注册路由接口和请求路由跳转接口。数据模型包括RouterRequest;对内关联路由表管理模块(Router Table)301、路由跳转核心模块(Router Core)302、路由跳转附加模块(RouterExternal)303和NSURL+EG Router子模块。其中,RouterRequest数据模型作为基类定派生两个子类RouterURL Request和Router ActionRequest,分别对应下文中所述的URL的请求方式和Action的请求方式,其中,URL支持NSURL和NS String两种形式。系统除了解析URL中附带的参数还支持附加参数,通过parameters属性传入到系统中。Router Table TargetModel定义了路由表目标项的具体数据模型。NSURL+EG Router提供路由解析的接口。
优选地,所述路由管理类300还用于包括但不限于接收源控制器发送的路由跳转请求后,解析路由表。
路由表管理模块301,用于处理包括但不限于路由表静态注册和(或)动态注册、加载,存储和管理注册的所述路由表,以及跳转目标源获取的行为;具体地,响应于所述路由管理类300解析路由表,查找跳转目标源。
路由跳转核心模块302,用于提供跳转接口,处理从源控制器跳转目标控制器的行为;具体地,用于当前页面跳转时,按照跳转方式完成从源控制器跳转到目标控制器的操作。
路由跳转附加模块303,用于响应于所述路由表管理模块没有查找到跳转目标源,处理外部跳转行为,所述外部跳转包括但不限于跳转外部浏览器和外部应用;
路由解析模块304,用于处理路由URL解析,包括但不限于当前页面跳转时,对UI路由组件跳转请求的参数进行解析。所述路由URL参见图9。
本发明公开的所述UI路由组件的构建,即基于苹果提供的App跳转方法和外链(即外部App之间跳转)进行的封装和功能拓展,以协议注册、接口调度的方式进行全局管理,支持多种注册形式,涵盖所有的跳转方法和自定义跳转,具有拓展性强、提高代码复用性、统一跳转逻辑、方便管理链接、改善用户体验、安全性高的技术效果。
图2为本发明公开的一个实施例之一种基于UI路由组件的iOS模块间跳转方法的步骤流程图,图3为发明公开的一个实施例之一种基于UI路由组件的iOS模块间跳转方法的流程示意图,图4为本发明公开的一个实施例之模块间跳转的框架示意图。如图2至图4所示,本发明一种基于UI路由组件的iOS模块间跳转方法,包括如下步骤:
步骤S101,启动App应用后,响应于应用模块初始化,向UI路由组件发送注册路由表请求,通过静态注册和(或)动态注册进行路由表的注册。
具体地,UI路由组件使用的前置程序是注册路由表。App启动,当应用模块初始化后,随即向UI路由组件发送注册路由请求(动态或静态),完成模块路由注册。
步骤S102,于源模块的源控制器向所述UI路由组件发送路由跳转请求,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转。
具体地,当App进程内有代码向路由组件发送路由跳转请求,UI路由组件接收请求,并判断是否能进行模块内部跳转。
步骤S103,若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转。
具体地,UI路由组件判断schemeURL是模块内,再由VC判断是否满足当前页面跳转。
步骤S104,若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转。
优选地,于步骤S101中,所述通过静态注册和(或)动态注册进行路由表的注册,进一步包括:
于路由表注册时,所述UI路由组件利用VC视图控制器提供scheme、host和路由表配置信息,路由协议提供协议方法,所述协议方法包括自定义跳转的协议方法;使用单一静态注册或者单一动态注册,或者静态注册和动态注册两种方式混合使用,且能够实时增加和覆盖。
具体地,在路由表注册阶段,所述UI路由组件需要VC提供scheme、host和路由表配置信息,路由协议提供了相关的协议方法,且这些协议方法均为类方法。其中scheme和配置信息为必须实现,host为可选;如果host未实现,则默认用VC的类名作为host值。另外,参见图5,路由表注册包括静态注册和动态注册两种方式,静态注册和动态注册两种方式可以混合使用,并且可以实时增加和覆盖。需要说明的是,所述VC是指UIViewController的缩写,即视图控制器(以下简称为“VC”),视图控制器是一种iOS应用程序中常用的对象,用于管理应用程序中的视图和用户交互。视图控制器通常负责加载和管理视图、响应用户事件、处理应用程序的状态变化等任务,是iOS应用程序中的核心组件之一。所述路由表结构如图6所示,具体地,scheme是路由表的名称,其值用来标识整个路由表,该值与下文所述的路由URL中的scheme是对应关系;host的具体名称用来标识路由表目标项,该值与下文所述的路由URL的host一一对应;路由表目标项的数据模型包含vcType、showType、className、fileName、identifier、bundleName等参数;其中,所述vcType是标识加载目标ViewController(View Controller是IOS界面开发中的视图控制器,用来管理页面的生命周期)的加载方式,支持Class、Xib、Storyboard三种方式,缺省默认为Class方式。所述show Type是标识View Controller的跳转模式,支持Push和Present模式,缺省默认为Push模式。所述className、fileName、identifier、bundleName均是vcType的依赖选项,其配置规则如下:
(1)如果vcType使用Class的方式,则需要提供className参数;
(2)如果vcType使用Xib的方式,则需要提供fileName(xib的名称)、bundleName(默认当前模块);
(3)如果vcType使用Storyboard,则需要提供fileName(storyboard的名称)、identifier(元素的标识)、bundleName(默认当前模块)。
本发明所述路由协议的定义如图7所示。路由协议提供了两个必须接口方法(方法一和方法二)和五个非必须接口方法(方法三至方法七),具体为:
方法一:获取目标控制器所属模块的协议名称,用于区分模块来源;
方法二:获取目标控制器配置,包含跳转方法和一些必须的文件名称;
方法三:获取目标控制器的路径名称(如果未实现该协议,默认使用控制器类名);
方法四:处理认证,认证成功后才能处理路由跳转;不处理认证,则默认按成功处理;
方法五:根据路由参数判断是否支持该路由(如果未实现该协议,默认YES);
方法六:基于方法五,处理路由,可以对目标项做参数赋值(如果未实现该协议,默认使用KVC赋值);
方法七:支持自定义控制器跳转(如果定义为CustomType,而未实现该协议,默认Push的方式跳转)实现该协议可以自定义跳转方式。也就是说,在路由跳转阶段,若所述路由表配置信息需要自定义跳转类型,所述路由协议提供自定义跳转的协议方法。
优选地,于步骤S101中,所述静态注册包括:
响应于访问者编辑所述路由表配置信息,所述应用模块初始化后,调用静态注册路由表接口,所述UI路由组件中的路由表管理模块所述UI路由组件根据传入的所述路由表配置信息完成路由表的注册;其中,所述路由表的配置信息包括文件方式和字典方式,所述文件方式支持json文件格式和plist文件格式。具体地,所述静态注册路由表接口设计如表1和表2所示。
表1:
表2:
优选地,于步骤S101中,所述动态注册包括:
利用VC视图控制器实现路由协议,所述应用模块初始化后,调用动态注册路由表接口,所述UI路由组件中的路由表管理模块内部动态加载所述路由表配置信息,完成路由表注册。具体地,动态注册路由表接口设计如表3所示。
表3:
接口名称 动态注册路由表
接口描述 @return是否注册成功
接口方法 -(BOOL)registerRouterTableDynamic;
优选地,参见图8,于步骤是S102中,所述设于源模块的源控制器向所述UI路由组件发送路由跳转请求,进一步包括:
所述源控制器调用所述UI路由组件的URL请求路由跳转接口,向所述UI路由组件传入标准格式的URL,对参数进行URL Encode编码;
或者,所述源控制器调用所述UI路由组件的Action请求路由跳转接口,向所述UI路由组件主动传入scheme、host和parameters。
具体地,本发明可以通过两种方式发送路由跳转请求,其一是过通过路由URL的方式请求路由跳转,其二是通过Action的方式请求路由跳转。该UI路由组件的路由管理类对外暴露上述URL请求路由跳转接口和Action请求路由跳转接口两个跳转接口。进一步地,路由URL的概念如图9所示,其中,scheme指代模块名标签,host指代目标项标签,key-value指代View Controller需要的参数键值对。URL请求路由跳转接口设计如表4所示。
表4:
所述Action请求路由跳转接口设计如表5所示。
表5:
优选地,于步骤S102中,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转,进一步包括:
所述UI路由组件接收所述路由跳转请求,所述UI路由组件中的路由管理类解析所述路由表,并比对跳转请求参数scheme、host;
通过所述UI路由组件中的路由表管理模块查找跳转目标源,若所述路由表中能够查找到跳转目标源,则表示能够进行模块内部跳转。
优选地,于步骤S103中,所述若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转,进一步包括:
将所述路由协议提供给所述VC视图控制器,判断是否满足跳转协议方法,以及处理参数的协议方法;具体地,在路由跳转阶段,路由协议通过实例方法-(BOOL)canHandleRouterWithParameters:(NSDictionary*)parameters,将源控制器的参数携带到目标控制器,目标控制器通过参数校验判断是否执行当次跳转,如果满足跳转条件,路由组件继续回调处理参数方法-(void)handleRouterWithParameters:(NSDictionary*)parameters,即目标控制器完成此次跳转的抉择和参数的接收。
响应于满足跳转协议方法,以及处理参数的协议方法,进行当前页面跳转。
优选地,所述响应于满足跳转协议方法,以及处理参数的协议方法,进行当前页面跳转,进一步包括:
对所述UI路由组件中的路由解析模块对所述UI路由组件跳转请求的参数进行解析,利用创建类方法创建目标控制器并赋值参数,通过系统提供的类方法获取当前的源控制器,通过所述UI路由组件中的路由跳转核心模块按照跳转方式完成从源控制器跳转到目标控制器的操作。
优选地,于步骤S104中,所述若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转,进一步包括:
若所述UI路由组件中的路由表管理模块没有查找到跳转目标源,表示不能进行模块内部跳转;
通过所述UI路由组件暴露的请求路由跳转接口进行模块外部跳转;或者,通过UI应用程序提供的openURL方法进行模块外部跳转。具体地,通过所述UI路由组件中的路由跳转附加模块处理模块外部跳转。所述openURL方法需要在plist文件中注册scheme,并且在AppDelegate中实现openURL的回调方法。
图10为本发明公开的一个具体实施例的流程示意图。如图10所示,本发明公开的一个模块间跳转的具体实施例,包括如下步骤:
(1)App启动,当应用模块初始化后,随即向UI路由组件发送注册路由请求(动态和/或静态),完成模块路由注册。
(2)当App进程内有代码向路由组件发送路由跳转请求(URL方式或Action方式),UI路由组件接收请求,并由管理类开始解析路由表,通过比对跳转请求参数scheme、host,如果路由表中查找到跳转目标源,执行应用内页跳转方法;如果路由表中没有查找到目标源,则认为是外部路由源,执行模块外部跳转方法。
(3)模块内部跳转过程:通过路由组件跳转请求的参数进行解析,通过runtime的创建类方法创建目标控制器并赋值参数,通过系统提供的类方法获取当前的源控制器,然后按照跳转方式完成从源控制器跳转到目标控制器的操作。
(4)模块外部跳转过程:使用UI路由组件内封装的系统方法canpenUrl进行跳转检测,使用openUrl完成模块外部跳转。
图11为本发明一种基于UI路由组件的iOS模块间跳转装置。如图11所示,本发明一种基于UI路由组件的iOS模块间跳转装置,包括:
路由表注册模块21,用于响应于应用模块初始化,向UI路由组件发送注册路由表请求,通过静态注册和(或)动态注册进行路由表的注册。
具体地,UI路由组件使用的前置程序是注册路由表。App启动,当应用模块初始化后,随即向UI路由组件发送注册路由请求(动态或静态),完成模块路由注册。
跳转判断模块22,用于设于源模块的源控制器向所述UI路由组件发送路由跳转请求,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转。具体地,当App进程内有代码向路由组件发送路由跳转请求,UI路由组件接收请求,并判断是否能进行模块内部跳转。
跳转执行模块23,用于执行模块内部跳转和模块外部跳转:
若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转。具体地,UI路由组件判断schemeURL是模块内,再由VC判断是否满足当前页面跳转。
若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转。
优选地,所述路由表注册模块21还用于:
于路由表注册时,所述UI路由组件利用VC视图控制器提供scheme、host和路由表配置信息,路由协议提供协议方法,所述协议方法包括自定义跳转的协议方法;使用单一静态注册或者单一动态注册,或者静态注册和动态注册两种方式混合使用,且能够实时增加和覆盖。具体地,在路由表注册阶段,所述UI路由组件需要VC提供scheme、host和路由表配置信息,路由协议提供了相关的协议方法,且这些协议方法均为类方法。其中scheme和配置信息为必须实现,host为可选;如果host未实现,则默认用VC的类名作为host值。另外,路由表注册包括静态注册和动态注册两种方式,静态注册和动态注册两种方式可以混合使用,并且可以实时增加和覆盖。
优选地,所述路由表注册模块21还用于:
响应于访问者编辑所述路由表配置信息,所述应用模块初始化后,调用静态注册路由表接口,所述UI路由组件中的路由表管理模块所述UI路由组件根据传入的所述路由表配置信息完成路由表的注册;其中,所述路由表的配置信息包括文件方式和字典方式,所述文件方式支持json文件格式和plist文件格式。所述静态注册路由表接口设计参见上文表1和表2所示。
优选地,所述路由表注册模块21还用于:
利用VC视图控制器实现路由协议,所述应用模块初始化后,调用动态注册路由表接口,所述UI路由组件中的路由表管理模块内部动态加载所述路由表配置信息,完成路由表注册。具体地,动态注册路由表接口设计参见上文表3所示。
优选地,所述跳转判断模块22还用于:
所述源控制器调用所述UI路由组件的URL请求路由跳转接口,向所述UI路由组件传入标准格式的URL,对参数进行URL Encode编码;
或者,所述源控制器调用所述UI路由组件的Action请求路由跳转接口,向所述UI路由组件主动传入scheme、host和parameters。
具体地,本发明可以通过两种方式发送路由跳转请求,其一是过通过路由URL的方式请求路由跳转,其二是通过Action的方式请求路由跳转。该UI路由组件的路由管理类对外暴露上述URL请求路由跳转接口和Action请求路由跳转接口两个跳转接口。进一步地,路由URL的概念如图9所示,其中,scheme指代模块名标签,host指代目标项标签,key-value指代View Controller需要的参数键值对。所述URL请求路由跳转接口设计参见上文表4所示。所述Action请求路由跳转接口设计参见上文表5所示。
优选地,所述跳转判断模块22还用于:
所述UI路由组件接收所述路由跳转请求,所述UI路由组件中的路由管理类解析所述路由表,并比对跳转请求参数scheme、host;
通过所述UI路由组件中的路由表管理模块查找跳转目标源,若所述路由表中能够查找到跳转目标源,则表示能够进行模块内部跳转。
优选地,所述跳转执行模块23还用于:将所述路由协议提供给所述VC视图控制器,判断是否满足跳转协议方法,以及处理参数的协议方法。具体地,在路由跳转阶段,路由协议通过实例方法-(BOOL)canHandleRouterWithParameters:(NSDictionary*)parameters,将源控制器的参数携带到目标控制器,目标控制器通过参数校验判断是否执行当次跳转,如果满足跳转条件,路由组件继续回调处理参数方法-(void)handleRouterWithParameters:(NSDictionary*)parameters,即目标控制器完成此次跳转的抉择和参数的接收。
响应于满足跳转协议方法,以及处理参数的协议方法,进行当前页面跳转。
优选地,所述跳转执行模块23中还用于:对所述UI路由组件中的路由解析模块对所述UI路由组件跳转请求的参数进行解析,利用创建类方法创建目标控制器并赋值参数,通过系统提供的类方法获取当前的源控制器,通过所述UI路由组件中的路由跳转核心模块按照跳转方式完成从源控制器跳转到目标控制器的操作。
优选地,所述跳转执行模块23还用于:
若所述UI路由组件中的路由表管理模块没有查找到跳转目标源,表示不能进行模块内部跳转;
通过所述UI路由组件暴露的请求路由跳转接口进行模块外部跳转;或者,通过UI应用程序提供的openURL方法进行模块外部跳转。具体地,通过所述UI路由组件中的路由跳转附加模块处理模块外部跳转。所述openURL方法需要在plist文件中注册scheme,并且在AppDelegate中实现openURL的回调方法。
需要说明的是,上述装置与本发明公开的一种基于UI路由组件的iOS模块间跳转方法相对应,其他未描述部分参见上文该方法中的内容,此处不再赘述。
综上所述,本发明一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置,本发明构建了UI路由组件,即基于苹果提供的App跳转方法和外链(即外部App之间跳转)进行的封装和功能拓展,以协议注册、接口调度的方式进行全局管理,支持多种注册形式,涵盖所有的跳转方法和自定义跳转,拓展性强、提高代码复用性、统一跳转逻辑、方便管理链接、改善用户体验、安全性高,可以对于模块与模块之间、页面与页面之间通过UI路由组件进行关联跳转,目标模块的目标控制器需要实现UI路由组件提供的路由协议,源模块的源控制器关联UI路由组件,并调用UI路由组件接口,通过本发明可实现App外部和内部的统一跳转,为应用开发“高内聚,低耦合”提供了保障。
需要指出的是,上述步骤的序号并不直接代表步骤的先后顺序,并且各个步骤和部件是可以分解和/或重新组合的,此种分解和/或重新组合应视为本公开的等效方案。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

Claims (10)

1.一种UI路由组件,包括:
路由管理类,用于对外暴露接口,对内处理功能逻辑、管理各个子模块的行为,包括但不限于接收应用模块发送的路由表注册请求,接收源控制器发送的路由跳转请求,以及判断能否进行模块内部跳转;
路由表管理模块,用于处理包括但不限于路由表静态注册和(或)动态注册、加载,存储和管理注册的所述路由表,以及查找、获取跳转目标源的行为;
路由跳转核心模块,用于提供跳转接口,处理从源控制器跳转目标控制器的行为;
路由跳转附加模块,用于响应于所述路由表管理模块没有查找到跳转目标源,处理模块外部跳转行为,所述模块外部跳转包括但不限于跳转外部浏览器和外部应用;
路由解析模块,用于处理路由URL解析,包括但不限于当前页面跳转时,对跳转请求参数进行解析。
2.一种基于UI路由组件的iOS模块间跳转方法,包括如下步骤:
响应于应用模块初始化,向UI路由组件发送注册路由表请求,通过静态注册和(或)动态注册进行路由表的注册;
设于源模块的源控制器向所述UI路由组件发送路由跳转请求,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转;
若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转;
若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转。
3.如权利要求2所述的一种基于UI路由组件的iOS模块间跳转方法,其特征在于,所述通过静态注册和(或)动态注册进行路由表的注册,进一步包括:
于路由表注册时,所述UI路由组件利用VC视图控制器提供scheme、host和路由表配置信息,路由协议提供协议方法,所述协议方法包括自定义跳转的协议方法;
使用单一静态注册或者单一动态注册,或者静态注册和动态注册两种方式混合使用,且能够实时增加和覆盖。
4.如权利要求3所述的一种基于UI路由组件的iOS模块间跳转方法,其特征在于,所述静态注册和动态注册分别包括如下步骤:
静态注册:响应于访问者编辑所述路由表配置信息,所述应用模块初始化后,调用静态注册路由表接口,所述UI路由组件所述UI路由组件根据传入的所述路由表配置信息完成路由表的注册;其中,所述路由表的配置信息包括文件方式和字典方式,所述文件方式支持json文件格式和plist文件格式;
动态注册:利用VC视图控制器实现路由协议,所述应用模块初始化后,调用动态注册路由表接口,所述UI路由组件内部动态加载所述路由表配置信息,完成路由表注册。
5.如权利要求2所述的一种基于UI路由组件的iOS模块间跳转方法,其特征在于,所述设于源模块的源控制器向所述UI路由组件发送路由跳转请求,进一步包括:
所述源控制器调用所述UI路由组件的URL请求路由跳转接口,向所述UI路由组件传入标准格式的URL,对参数进行URL Encode编码;
或者,所述源控制器调用所述UI路由组件的Action请求路由跳转接口,向所述UI路由组件主动传入scheme、host和parameters。
6.如权利要求2所述的一种基于UI路由组件的iOS模块间跳转方法,其特征在于,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转,进一步包括:
所述UI路由组件接收所述路由跳转请求,解析所述路由表,并比对跳转请求参数scheme、host;
通过所述UI路由组件查找跳转目标源,若所述路由表中能够查找到跳转目标源,则表示能够进行模块内部跳转。
7.如权利要求2所述的一种基于UI路由组件的iOS模块间跳转方法,其特征在于,所述若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转,进一步包括:
将所述路由协议提供给所述VC视图控制器,判断是否满足跳转协议方法,以及处理参数的协议方法;
响应于满足跳转协议方法,以及处理参数的协议方法,进行当前页面跳转。
8.如权利要求7所述的一种基于UI路由组件的iOS模块间跳转方法,其特征在于,所述响应于满足跳转协议方法,以及处理参数的协议方法,进行当前页面跳转,进一步包括:
对所述UI路由组件跳转请求的参数进行解析,利用创建类方法创建目标控制器并赋值参数,通过系统提供的类方法获取当前的源控制器,按照跳转方式完成从源控制器跳转到目标控制器的操作。
9.如权利要求6所述的一种基于UI路由组件的iOS模块间跳转方法,其特征在于,所述若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转,进一步包括:
若所述UI路由组件没有查找到跳转目标源,表示不能进行模块内部跳转;
通过所述UI路由组件暴露的请求路由跳转接口进行模块外部跳转;或者,通过UI 应用程序提供的openURL方法进行模块外部跳转。
10.一种基于UI路由组件的iOS模块间跳转装置,包括:
路由表注册模块,用于响应于应用模块初始化,向UI路由组件发送注册路由表请求,通过静态注册和(或)动态注册进行路由表的注册;
跳转判断模块,用于设于源模块的源控制器向所述UI路由组件发送路由跳转请求,所述UI路由组件接收所述路由跳转请求并判断能否进行模块内部跳转;
跳转执行模块,用于执行模块内部跳转和模块外部跳转:
若能够进行模块内部跳转,通过VC视图控制器判断是否满足当前页面跳转,于满足当前页面跳转时,进行当前页面跳转;
若不能进行模块内部跳转,利用所述UI路由组件进行跳转检测,执行模块外部跳转。
CN202310553471.4A 2023-05-17 2023-05-17 一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置 Pending CN116527577A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310553471.4A CN116527577A (zh) 2023-05-17 2023-05-17 一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310553471.4A CN116527577A (zh) 2023-05-17 2023-05-17 一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置

Publications (1)

Publication Number Publication Date
CN116527577A true CN116527577A (zh) 2023-08-01

Family

ID=87394035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310553471.4A Pending CN116527577A (zh) 2023-05-17 2023-05-17 一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置

Country Status (1)

Country Link
CN (1) CN116527577A (zh)

Similar Documents

Publication Publication Date Title
US8516508B1 (en) Automated application programming interface (API) generation
US20060265469A1 (en) XML based scripting framework, and methods of providing automated interactions with remote systems
CN102193812B (zh) 一种代码编译方法、主机及系统
CN110933095A (zh) 一种报文解析方法及装置
CN111506314B (zh) 项目开发的方法、装置、服务器及介质
CN112394942A (zh) 基于云计算的分布式软件开发编译方法及软件开发平台
CN111737697B (zh) 一种基于原子化功能的安全扫描系统及扫描方法
CN113312046A (zh) 子应用页面处理方法、装置和计算机设备
CN111752841A (zh) 单测模拟方法、装置、设备与计算机可读存储介质
CN111683005B (zh) 一种物联网智能网关设备及其构建方法
CN116166907B (zh) 一种使用WebAssembly和服务页面编译技术开发Web应用的方法及装置
CN113179269A (zh) 基于物联网的协议数据解析方法、系统、介质及程序产品
CN116680003A (zh) 前端插件化系统
CN116527577A (zh) 一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置
CN113590179B (zh) 插件检测方法、装置、电子设备及存储介质
CN117971350A (zh) 小程序运行方法、装置和计算机可读存储介质
CN115525561A (zh) 协议接口测试方法、装置、终端设备以及存储介质
CN115390846A (zh) 编译构建方法、装置、电子设备和存储介质
CN113033816B (zh) 机器学习模型的处理方法、装置、存储介质及电子设备
CN110990137B (zh) 应用程序的功能模块调度方法、调度信息处理方法及设备
CN114490318A (zh) 一种基于字节码增强实现弱隔离的环境治理系统及方法
CN113032256A (zh) 自动化测试方法、装置、计算机系统和可读存储介质
CN106570143B (zh) 一种发送响应对象的方法和装置
CN110297768A (zh) 真机SDK兼容模拟器debug的方法、装置、设备及存储介质
CN114564413B (zh) 一种同步设备测试方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination