CN115113962A - 界面跳转方法、装置、电子设备及可读存储介质 - Google Patents
界面跳转方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN115113962A CN115113962A CN202210689705.3A CN202210689705A CN115113962A CN 115113962 A CN115113962 A CN 115113962A CN 202210689705 A CN202210689705 A CN 202210689705A CN 115113962 A CN115113962 A CN 115113962A
- Authority
- CN
- China
- Prior art keywords
- interface
- target
- target interface
- sdk
- module
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000013461 design Methods 0.000 claims abstract description 25
- 238000004891 communication Methods 0.000 claims description 16
- 230000009191 jumping Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 238000007726 management method Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种界面跳转方法、装置、电子设备及可读存储介质应用于应用程序的开发者工具包SDK,所述SDK中包括基于用户界面框架Flutter设计的动态化开源框架Fair,所述Fair用于将界面文件转换为对应的应用程序的界面,所述方法包括:在即将跳转至目标界面时,获取所述目标界面对应的目标界面参数;通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数;当所述目标界面为非原生界面或者为原生界面但已经远程更新时,从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,并通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。本发明实施例可以实现目标界面的跳转。
Description
技术领域
本发明实施例涉及互联网技术领域,特别是涉及一种界面跳转方法、一种界面跳转装置、一种电子设备以及一种计算机可读存储介质。
背景技术
Flutter是一种开源的构建图形用户界面(UI,User Interface)工具包,帮助开发者通过一套代码库高效构建iOS和Android等多种操作系统的应用程序(App,Application)。通过在开发工程项目时,引入Flutter框架,可以实现应用程序的跨平台运行,大大提高了应用程序开发的效率。
动态化更新是指可以不依赖应用程序的程序安装包,就能进行动态实时更新应用程序的界面的技术。然而,Flutter并不支持应用程序的动态化更新,导致采用Flutter构建完成的界面一旦发布将无法更改。
因此,Fair应运而生,Fair是一个为Flutter设计的界面及逻辑动态化的开源框架,可以实现基于Flutter框架构建的应用程序的界面的动态化更新。然而,虽然目前通过Fair可以实现应用程序的界面的动态化更新,但是应用程序无法跳转至动态化更新后的界面(非原生界面)。
发明内容
本发明实施例是提供一种界面跳转方法、装置、电子设备以及计算机可读存储介质,以解决应用程序的非原生界面的跳转问题。
本发明实施例公开了一种,应用于应用程序的开发者工具包SDK,所述SDK中包括基于用户界面框架Flutter设计的动态化开源框架Fair,所述Fair用于将界面文件转换为对应的应用程序的界面,所述方法包括:
在即将跳转至目标界面时,获取所述目标界面对应的目标界面参数;
通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数;
当所述目标界面为非原生界面或者为原生界面但已经远程更新时,从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,并通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
可选地,在所述通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数之后,所述方法还包括:
当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面文件,则通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
可选地,在所述通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数之后,所述方法还包括:
当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面标识,则根据所述目标界面标识从所述应用程序的资源目录下加载所述目标界面对应的目标界面文件,以通过所述Fair将所述目标界面文件转换为所述目标界面。
可选地,所述应用程序包括多个模块,所述模块具有对应的模块标识,所述模块包括多个界面,所述方法还包括:
获取待更新模块的待更新模块标识和所述待更新模块标识的版本信息;
将所述待更新模块标识和所述版本信息发送至服务器;
若所述服务器根据所述版本信息确定所述待更新模块标识对应的待更新模块不是最新的模块,则接收到所述服务器发送的模块下载地址;
根据所述模块下载地址从所述服务器下载所述待更新模块对应的最新的界面文件;
在所述SDK的缓存中保存所述界面文件,并根据所述界面文件在所述SDK的缓存中的位置生成对应的路径。
可选地,所述目标传入参数包括目标界面标识,所述从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,包括:
若所述SDK的缓存中保存有所述目标界面标识对应的目标界面文件,则从所述SDK中获取所述目标界面标识对应的目标路径,以根据所述目标路径从所述SDK的缓存中加载所述目标界面标识对应的目标界面文件;
若所述SDK的缓存中没有保存所述目标界面标识对应的目标界面文件,则从服务器中远程加载所述目标界面标识对应的目标界面文件。
可选地,界面参数包括模块标识和界面标识。
本发明实施例还公开了一种界面跳转装置,应用于应用程序的开发者工具包SDK,所述SDK中包括基于用户界面框架Flutter设计的动态化开源框架Fair,所述Fair用于将界面文件转换为对应的应用程序的界面,所述装置包括:
目标界面参数获取模块,用于在即将跳转至目标界面时,获取所述目标界面对应的目标界面参数;
目标传入参数确定模块,用于通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数;
第一目标界面跳转模块,用于当所述目标界面为非原生界面或者为原生界面但已经远程更新时,从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,并通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
可选地,所述装置还包括:第二目标界面跳转模块,用于:
当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面文件,则通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
可选地,所述装置还包括:第三目标界面跳转模块,用于:
当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面标识,则根据所述目标界面标识从所述应用程序的资源目录下加载所述目标界面对应的目标界面文件,以通过所述Fair将所述目标界面文件转换为所述目标界面。
可选地,所述应用程序包括多个模块,所述模块具有对应的模块标识,所述模块包括多个界面,所述装置还包括:界面文件下载模块,用于:
获取待更新模块的待更新模块标识和所述待更新模块标识的版本信息;
将所述待更新模块标识和所述版本信息发送至服务器;
若所述服务器根据所述版本信息确定所述待更新模块标识对应的待更新模块不是最新的模块,则接收到所述服务器发送的模块下载地址;
根据所述模块下载地址从所述服务器下载所述待更新模块对应的最新的界面文件;
在所述SDK的缓存中保存所述界面文件,并根据所述界面文件在所述SDK的缓存中的位置生成对应的路径。
可选地,所述目标传入参数包括目标界面标识,所述第一目标界面跳转模块,具体用于:
若所述SDK的缓存中保存有所述目标界面标识对应的目标界面文件,则从所述SDK中获取所述目标界面标识对应的目标路径,以根据所述目标路径从所述SDK的缓存中加载所述目标界面标识对应的目标界面文件;
若所述SDK的缓存中没有保存所述目标界面标识对应的目标界面文件,则从服务器中远程加载所述目标界面标识对应的目标界面文件。
可选地,界面参数包括模块标识和界面标识。
本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。
本发明实施例还公开了一种计算机程序产品,该程序产品被存储在存储介质中,该计算机程序产品被至少一个处理器执行以实现如本发明实施例所述的方法。
本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,在应用程序的开发者工具包SDK中包括基于用户界面框架Flutter设计的动态化开源框架Fair,Fair用于将界面文件转换为对应的应用程序的界面,在应用程序中即将跳转至目标界面时,获取目标界面对应的目标界面参数,通过SDK的路由设计确定目标界面参数对应的目标传入参数,其中,当目标界面为非原生界面或者为原生界面但已经远程更新时,从服务器中远程加载或者从SDK中加载目标传入参数对应的目标界面文件,并通过Fair将目标界面文件转换为目标界面,从而实现从初始界面至至目标界面的跳转。本发明实施例考虑到SDK可以从服务器中远程加载界面文件,Fair虽然可以将界面文件转换为界面但是不能从服务器中远程加载界面文件,因此,本发明实施例在SDK中设置Fair,进而可以结合SDK和Fair的功能,在跳转的目标界面为非原生界面或者为原生界面但已经远程更新时,通过SDK从服务器中远程加载对应的目标界面文件,再通过Fair将目标界面文件转换为目标界面,实现目标界面的跳转。
附图说明
图1是本发明实施例中提供的一种应用环境的示意图;
图2是本发明实施例中提供的一种界面跳转方法的步骤流程图;
图3是本发明实施例中提供的一种目标界面的处理示意图;
图4是本发明实施例中提供的一种界面文件加载的示意图;
图5是本发明实施例中提供的一种模块动态化更新的示意图;
图6是本发明实施例中提供的一种针对多场景的SDK的路由设计的示意图;
图7是本发明实施例中提供的一种路由设计的整体架构时序图;
图8是本发明实施例中提供的一种动态化更新的整体架构时序图;
图9是本发明实施例中提供的一种界面跳转装置的结构框图;
图10是实现本发明各个实施例的一种电子设备的硬件结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
首先,对于本发明实施例涉及的术语进行介绍:
Fair:企业研发的可以对FlutterWidget解析成json、meta等格式文件保留大部分界面和动态逻辑。
路由(Router):项目(应用程序)各界面、各系统组件、各模块等通信的中转工具,可以进行界面跳转与加载,跨Module线程、进程通信等。
Module(模块):项目的模块划分,例如,一个项目可以划分为“账户管理”、“首页”、“图片选择”和“权限管理”等模块。不同模块独立开发和运行,又能组合到一起丰富整体功能;期间相互加载、相互通信可通过路由Router进行。
Widget(组件):Flutter的应用程序的界面元素可以理解为一个个的Widget,一个界面,一个按钮,一个图标等等,都可以理解为一个Widget,一个Module中包含多个Widget。为了便于理解,在本发明实施例中,Widget可以指代应用程序的界面。
SDK(Software Development Kit,开发者工具包):是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用程序时的开发工具的集合。
在具体实现中,动态化更新是指可以即不依赖应用程序的程序安装包(即不需要依赖在应用程序的资源目录下的界面文件),就能进行动态实时更新应用程序的界面的技术。但是,Flutter不支持动态化更新,也即是采用Flutter构建完成的应用程序的界面一旦发布将无法更改,只能等待新版本的程序安装包。
针对Flutter的应用程序无法实现动态化更新的问题,目前为了实现Flutter的应用程序的界面提出的动态化更新方案有:
1)在Flutter内部嵌套RN(ReactNative)、H5(Html5)等,从而可以通过RN、H5等实现界面的动态化更新;
2)通过multidex插件化实现各界面的动态化更新;
然而,上述动态化更新方案的缺陷有:1)RN、H5最主要的优势是跨平台,其动态化更新能力是不足的,而Flutter是更好的跨平台能力;2)RN、H5局限性强,维护复杂;2)存在严重性能问题;3)众多底层功能,严重依赖Native(原生);4)版本维护问题,以RN为例,不同版本的RN间的API(Application Programming Interface,应用程序接口)不同,导致RN一旦发生版本更新,就需要另起一套维护成本。
因此,Fair应运而生,Fair是一个基于Flutter设计的界面及逻辑动态化的开源框架,可以实现基于Flutter框架构建的应用程序的界面的动态化更新,并且,Fair简单,无性能问题,接入成本低等优点,是众多开发者的选择,基于Fair实现界面的动态化更新不存在上述的动态化更新方案所存在的问题。
然而,Fair加载界面的界面文件的方式是通过Fair提供的一个加载组件(FairWidget)实现,具体地,Fair提前将FlutterWidget按一定规则解析成json格式的界面文件保存到电子设备的应用程序的资源目录(本地)下,在需要时,Fair通过该加载组件将应用程序资源目录的界面文件提取出来进行编译,再转换为界面后实现界面跳转,但是,Fair不具备非原生界面的跳转功能(不能从非应用程序的资源目录下获取界面文件),并且,FairWidget不具备远程加载功能(从服务器中远程加载界面文件)。可以理解,Fair若需要跳转到非原生界面,就需要在应用程序的资源目录中新增非原生界面的界面文件,但是,由于如果在应用程序资源目录中新增非原生界面的界面文件,就需要将该非原生界面的界面文件提前放在应用程序的程序安装包中一起上线,仍然需要依赖应用程序的程序安装包,那么也就不能实现应用程序的动态化更新了。
此外,还存在一种动态化更新方案是,通过Flap、NEJFlutter等第三方SDK实现界面的动态化更新,第三方SDK具备远程加载功能。在实际应用中,Fair可以替换Flutter框架中的FlutterWidget,基于Fair编译出来的Widget(界面文件),其加载方式必须兼容Fair的DSL(domain specific language,领域专用语言)解析规则,然而,目前市面上第三方SDK并不兼容Fair的DLS解析规则,因此,第三方SDK无法支持Fair的应用程序的动态化更新,当然,也更加无法解决动态化更新后的非原生界面的跳转问题。
针对上述问题,本发明实施例提供了一种界面跳转方法,该方法中应用程序的SDK中包括Fair,该SDK具备远程加载功能,可以支持通过Fair对应用程序的动态化更新,从而实现动态化更新后的非原生界面的跳转。
本发明实施例所提供的界面跳转方法,可以应用于如图1所示的应用环境中。其中,终端设备101均通过网络与服务器102进行通信。在终端设备101中安装有应用程序,该应用程序包括开发者工具包SDK,SDK中包括基于用户界面框架Flutter设计的动态化开源框架Fair述Fair用于将界面文件转换为对应的应用程序的界面,具体地,在终端设备101中的应用程序即将从初始界面跳转至目标界面时,获取目标界面对应的目标界面参数;通过SDK的路由设计确定目标界面参数对应的目标传入参数;当目标界面为非原生界面或者为原生界面但已经远程更新时,从服务器102中远程加载或者从SDK中加载所述目标传入参数对应的目标界面文件,并通过Fair将目标界面文件转换为目标界面,以跳转至目标界面。
实际应用中,终端设备101可以包括但不限于是手机、平板电脑、可穿戴设备、车载设备、增强现实(AR,augmented reality)设备、虚拟现实(VR,virtual reality)设备、笔记本电脑、个人计算机(PC,Personal Computer)、个人数字助理(Personal DigitalAssistant,PDA)等电子设备。服务器102可以是独立运行的服务器,或者由多个服务器组成的服务器集群,其中,服务器可以是云端服务器。
参照图2,示出了本发明实施例中提供的一种界面跳转方法的步骤流程图,应用于应用程序的开发者工具包SDK,所述SDK中包括基于用户界面框架Flutter设计的动态化开源框架Fair,所述Fair用于将界面文件转换为对应的应用程序的界面,具体可以包括如下步骤:
步骤201、在即将跳转至目标界面时,获取所述目标界面对应的目标界面参数。
在具体实现中,在应用程序中打开某个界面后,可以从该界面跳转至另一个界面中,在本发明实施例中,将即将跳转的界面称为目标界面,跳转前的界面为初始界面。其中,初始界面和目标界面可以原生界面、非原生界面或者虽然是原生界面但是已经在远程更新。
具体地,原生界面是指其对应的json、meta等格式文件(界面文件)在应用程序的资源目录下的界面,非原生界面是指其对应的json、meta等格式文件(界面文件)不在应用程序的资源目录下,而是在远程服务器中或者在应用程序的SDK缓存中的界面。
其中,每个界面具有其对应的界面参数,具体来说,界面参数至少可以包括该界面所在应用程序的模块的模块标识(bundleId)和界面标识(pagename)。
步骤202、通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数。
在本发明实施例中,在SDK中设置了路由设计,路由设计用于指示如何进行界面的加载、数据传递等,以完成界面的跳转。具体地,基于SDK中的路由设计可以根据目标界面的目标界面参数确定其对应的目标传入参数,进而可以根据目标传入参数来进行对应的操作。其中,SDK基于不同的传入参数可以执行不同的操作,例如,基于不同的传入参数可以直接跳转至目标界面、去指定的存储位置(包括应用程序的资源目录、远程服务器或者SDK)获取对应的界面文件、或者返回空值等操作。
步骤203、当所述目标界面为非原生界面或者为原生界面但已经远程更新时,从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,并通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
在本发明实施例中,如果目标界面为非原生界面,或者目标界面为原生界面但已经远程更新(已经在远程更新的原生界面也可以视为是非原生界面),则需要通过Fair对该目标界面进行更新,具体地,可以通过SDK从服务器中远程加载目标传入参数对应的目标界面文件或者从SDK中加载目标传入参数对应的目标界面文件,再通过SDK中的Fair将目标界面文件转换为目标界面,实现了对为非原生界面的目标界面的动态化更新),完成从初始界面至目标界面的跳转。
可见,本发明实施例对于Fair无法跳转非原生界面的问题,通过SKD中的路由设计,实现了原生界面与动态化界面(非原生界面)的跳转,并且,也适用于原生界面与原生界面的跳转,以及,非原生界面与非原生界面的跳转。此外,本发明实施例在SDK中添加路由设计,并不会影响应用程序原生模块和原生界面之间的路由。
在上述界面跳转方法中,本发明实施例考虑到SDK可以从服务器中远程加载界面文件,Fair虽然可以将界面文件转换为界面但是不能从服务器中远程加载界面文件,因此,本发明实施例在SDK中设置Fair,进而可以结合SDK和Fair的功能,在跳转的目标界面为非原生界面或者为原生界面但已经远程更新时,通过SDK从服务器中远程加载对应的目标界面文件,再通过Fair将目标界面文件转换为目标界面,实现目标界面的跳转。
在一示例性实施例中,在所述步骤202、通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数之后,所述方法还可以包括如下步骤:
当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面标识,则根据所述目标界面标识从所述应用程序的资源目录下加载所述目标界面对应的目标界面文件,以通过所述Fair将所述目标界面文件转换为所述目标界面;
当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面文件,则通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
在本发明实施例中,如果目标界面为原生界面,并且该目标界面没有远程更新,则可以通过Fair对该目标界面进行更新。其中,在SDK中可以设置接口,使得可以通过SDK使用Flutter原生界面的路由设计,即Flutter原生界面的跳转方式,来跳转至目标界面。
具体地,Flutter原生的界面跳转方式包括有:PushNamed:跳转的目标界面为原生界面,通过注册界面文件的路径的方式,在跳转目标界面的时候,通过查找路径找到该原生界面对应的界面文件,在完成加载对界面文件加载后,即可跳转至原生界面,类似于Java的Class.forName()形式;Push:跳转的目标界面为原生界面,直接通过类实例方式完成加载到界面文件,类似于Java的new Class()方式。
在本发明实施例中,若在SDK中是通过PushNamed方式的跳转至为原生界面的目标界面,需要将目标界面注册到SDK中,例如:FairPushy.registerRoutes({"home":(context,params)=>WBHomePage(context,params)}),从而SDK通过接口调用PushNamed方式,可以基于目标界面参数确定目标传入参数是目标界面标识,则可以根据目标界面标识确定路径,进而从通过该路径查找到对应的应用程序的资源目录,去加载目标界面对应的目标界面文件,然后,就可以通过Fair将所述目标界面文件转换为目标界面。若在SDK中是通过Push方式的跳转至为原生界面的目标界面,则可以无需在SDK中注册,只需要在调用SDK通过接口调用Push方式,可以基于目标界面参数确定目标传入参数是目标界面文件,则通过Fair将所述目标界面文件转换为目标界面。
在上述示例性实施例中,若应用程序跳转的目标界面是原生界面且未远程更新,则SDK可以通过接口调用Flutter原生界面的跳转方式,来实现目标界面的跳转。
在一示例性实施例中,所述应用程序包括多个模块,所述模块具有对应的模块标识,所述模块包括多个界面,所述方法还可以包括如下步骤:
获取待更新模块的待更新模块标识和所述待更新模块标识的版本信息;
将所述待更新模块标识和所述版本信息发送至服务器;
若所述服务器根据所述版本信息确定所述待更新模块标识对应的待更新模块不是最新的模块,则接收到所述服务器发送的模块下载地址;
根据所述模块下载地址从所述服务器下载所述待更新模块对应的最新的界面文件;
在所述SDK的缓存中保存所述界面文件,并根据所述界面文件在所述SDK的缓存中的位置生成对应的路径。
其中,待更新模块可以是在跳转为非原生界面的目标界面时该目标界面所在的模块,也可以是应用程序中指定的多个模块,也可以是应用程序中全部的模块,本发明实施例对此无需加以限制。在具体实现中,一个应用程序下会划分为多个模块,每个模块又分别包括多个界面,而通常开发者对应用程序的更新是按照模块更新,因此本发明实施例在可以按照模块来从服务器中远程下载界面文件。当然,在实际中也可以按照界面更新,本发明实施例对此同样无需加以限制。
在本发明实施例中,SDK获取待更新模块的待更新模块标识(bundleId)和待更新模块标识的版本信息(version),并发送至服务器,如果服务器根据版本信息确定待更新模块不是最新的模块,则SDK接收到服务器发送的模块下载地址,SDK将根据模块下载地址从服务器下载该待更新模块对应的最新的界面文件,并在保存在SDK的缓存中,同时可以根据界面文件在SDK的缓存中的位置生成对应的路径(path)。如果服务器根据版本信息确定待更新模块是最新的模块,则可以不处理或者向SDK反馈待更新模块已经是最新的模块。
在上述示例性实施例中,SDK可以从服务器中获取模块最新的界面文件,进而SDK可以基于最新的界面文件对界面进行动态化更新。
在一示例性实施例中,所述目标传入参数包括目标界面标识,所述步骤203、从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,可以包括如下步骤:
若所述SDK的缓存中保存有所述目标界面标识对应的目标界面文件,则从所述SDK中获取所述目标界面标识对应的目标路径,以根据所述目标路径从所述SDK的缓存中加载所述目标界面标识对应的目标界面文件;
若所述SDK的缓存中没有保存所述目标界面标识对应的目标界面文件,则从服务器中远程加载所述目标界面标识对应的目标界面文件。
在本发明实施例中,在SDK的缓存中可以保存界面文件,因此,在确定目标界面是原生界面后,首先可以确定在SDK的缓存中是否已经有目标界面标识对应的目标界面文件,若SDK的缓存中已经有目标界面标识对应的目标界面文件,则可以根据目标界面标识确定目标路径,进而根据目标路径从SDK的缓存中加载到目标界面标识对应的目标界面文件,若SDK的缓存中没有目标界面标识对应的目标界面文件,则可以根据目标界面标识,从服务器中远程加载到该目标界面标识对应的目标界面文件。
在上述示例性实施例中,若SDK的缓存中保存了目标界面对应的目标界面文件,则可以无需从服务器远程下载,可以提高目标界面的跳转速度,此外,即使SDK的缓存中没有保存目标界面对应的目标界面文件,也可以从服务器远程加载,保证的目标界面的正常跳转。
为了使本领域技术人员更好地理解本发明实施例的技术方案,下面通过具体例子进行示例性说明:
参照图3,是本发明实施例中提供的一种目标界面的处理示意图,在即将跳转至目标界面时,确定该目标界面是否为原生界面,若目标界面是非原生界面,则可以对目标界面进行动态化更新,若目标界面是原生界面,则可以对目标界面对应的目标界面文件直接加载。
参照图4,是本发明实施例中提供的一种界面文件加载的示意图,具体地,确定该目标界面是否原生界面,若目标界面是非原生界面,则可以对目标界面进行动态化更新,然后,判断在SDK的缓存中是否存在该目标界面对应的目标界面文件,若是,则从SDK的缓存中直接加载对应的目标界面文件,若否,则可以从服务器远程加载对应的目标界面文件,并保存在SDK的缓存中。
参照图5,是本发明实施例中提供的一种模块动态化更新的示意图,假设应用程序的多个模块Module_1、Module_2、Module_3、……Module_i已经远程更新,则SDK从服务器远程加载已经远程更新的多个模块中的界面对应的界面文件,进而可以基于界面文件实现界面的动态化更新。
在实际应用中,需要面对多种场景下的目标界面的跳转,具体地:场景一:跳转应用程序的原生界面;场景二:跳转应用程序的非原生界面;场景三:跳转应用程序的原生界面,但是该原生界面中已经在远程更新。因此,本发明实施例为了可以实现多种场景下的目标界面的跳转,在SDK的路由设计,可以参照图6所示,具体地:
在跳转目标界面时,确定目标界面是否是原生界面,若目标界面是非原生界面,则从服务器或者SDK的缓存中加载目标界面文件,从而实现目标界面的动态化更新,若目标界面是原生界面且未远程更新,则从资源目录下加载模板界面文件,若目标界面是原生界面但已经远程更新,则从服务器或者SDK的缓存中加载目标界面文件,从而实现目标界面的动态化更新,在完成目标界面的动态化更新后,就可以跳转到目标界面,以在应用程序中进行展示。
参照图7,是本发明实施例中提供的一种路由设计的整体架构时序图,包括ModuleA.page(模块A的界面),FairPushyWidget(SDK的中间件,具有远程加载能力),server(服务器),ModuleB.page(模块B的界面),具体时序过程为:
1、在ModuleA.page跳转(jump)至ModuleB.page之前,FairPushyWidget获取到ModuleB.page的bundleId和pagename;
2、FairPushyWidget基于bundleId和pagename向server请求加载对应的界面文件;
3、若server中不存在bundleId和pagename对应的界面文件,则向FairPushyWidget返回失败的callback(code!=0),callback包括code_msg(回调说明);
4、若server中存在bundleId和pagename对应的界面文件,则向FairPushyWidget返回成功的CALLBACK(code=0),CALLBACK包括code_msg(回调说明);
5、FairPushyWidget根据ModuleB.page的bundleId和pagename确定对应的传入参数,以根据传入参数进行对应的界面处理;
6、若传入参数是ModuleB.page的对应的界面文件,则可以直接跳转至ModuleB.page;
7、若传入参数是ModuleB.page的对应的pagename,则确定ModuleB.page是原生界面还是非原生界面;
8、若是原生界面,则根据pagename从资源目录下找到对应的界面文件(Widget),直接跳转至ModuleB.page;
9、若是非原生界面,则根据bundleId和pagename从SDK的缓存中获取对应的界面文件,基于该界面文件进行ModuleB.page的动态化更新,实现至ModuleB.page的跳转。
其中,传入参数对应的描述:
callback对应的描述:
参照图8,是本发明实施例中提供的一种动态化更新(热更新)的整体架构时序图,相当于是图7的1-4部分,包括FairPushyWidget、Delegate(下载的封装入口,主要是方便中间件部分跟下载流程进行交互的)、file(是对文件的管理操作,因为下载、保存、解压,都是文件行为)、http(网络请求部分)和server(服务器),具体地:
1、FairPushyWidget请求更新模块(bundleId);
2、走向Delegate自己内部的流程(internal call);
3、通过bundleId确定SDK的缓存中是否有对应的界面文件;
4、若缓存有对应的界面文件,则返回缓存对应的路径和版本信息(version);
5、若缓存没有对应的界面文件,则进入下一步;
6、基于version判断模块是否是最新的;
7、请求server,基于version判断模块是否是最新的;
8、server返回判断结果;
9、判断结果为模块是最新的;
10、判断结果为模块不是最新的,返回模块下载地址(当然也可以直接进行下载操作);
11、通过模块下载地址下载对应的界面文件;
12、请求server,返回该下载地址下载对应的界面文件;
13、server返回界面文件;
14、返回界面文件;
15、并按照bundleId和version保存;
16、保存成功,可以生成该界面文件对应的路径(path);
17、保存失败;
18、server没有返回界面文件;
19、失败。
综上可知,应用本发明实施例,解决了市场上无Fair动态化更新SDK的问题,使得可以加快Fair动态化开发普及,并且,由于Fair具备接入成本低、性能稳定等优点,可以大幅提升开发者开发效率,提升产品研发迭代效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图9,示出了本发明实施例中提供的一种界面跳转装置的结构框图,应用于应用程序的开发者工具包SDK,所述SDK中包括基于用户界面框架Flutter设计的动态化开源框架Fair,所述Fair用于将界面文件转换为对应的应用程序的界面,具体可以包括如下模块:
目标界面参数获取模块901,用于在即将跳转至目标界面时,获取所述目标界面对应的目标界面参数;
目标传入参数确定模块902,用于通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数;
第一目标界面跳转模块903,用于当所述目标界面为非原生界面或者为原生界面但已经远程更新时,从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,并通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
在一示例性实施例中,所述装置还可以包括:
第二目标界面跳转模块,用于当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面文件,则通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
在一示例性实施例中,所述装置还包括:第三目标界面跳转模块,用于:
当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面标识,则根据所述目标界面标识从所述应用程序的资源目录下加载所述目标界面对应的目标界面文件,以通过所述Fair将所述目标界面文件转换为所述目标界面。
在一示例性实施例中,所述应用程序包括多个模块,所述模块具有对应的模块标识,所述模块包括多个界面,所述装置还包括:界面文件下载模块,用于:
获取待更新模块的待更新模块标识和所述待更新模块标识的版本信息;
将所述待更新模块标识和所述版本信息发送至服务器;
若所述服务器根据所述版本信息确定所述待更新模块标识对应的待更新模块不是最新的模块,则接收到所述服务器发送的模块下载地址;
根据所述模块下载地址从所述服务器下载所述待更新模块对应的最新的界面文件;
在所述SDK的缓存中保存所述界面文件,并根据所述界面文件在所述SDK的缓存中的位置生成对应的路径。
在一示例性实施例中,所述目标传入参数包括目标界面标识,所述第一目标界面跳转模块903,具体用于:
若所述SDK的缓存中保存有所述目标界面标识对应的目标界面文件,则从所述SDK中获取所述目标界面标识对应的目标路径,以根据所述目标路径从所述SDK的缓存中加载所述目标界面标识对应的目标界面文件;
若所述SDK的缓存中没有保存所述目标界面标识对应的目标界面文件,则从服务器中远程加载所述目标界面标识对应的目标界面文件。
在一示例性实施例中,界面参数包括模块标识和界面标识。
通过上述方式,本发明实施例考虑到SDK可以从服务器中远程加载界面文件,Fair虽然可以将界面文件转换为界面但是不能从服务器中远程加载界面文件,因此,本发明实施例在SDK中设置Fair,进而可以结合SDK和Fair在跳转的目标界面为非原生界面或者为原生界面但已经远程更新时,可以通过SDK从服务器中远程加载对应的目标界面文件,再通过Fair将目标界面文件转换为目标界面,实现目标界面的跳转。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另外,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述界面跳转方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述界面跳转方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本发明实施例还提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述界面跳转方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
图10为实现本发明各个实施例的一种电子设备的硬件结构示意图。
该电子设备1000包括但不限于:射频单元1001、网络模块1002、音频输出单元1003、输入单元1004、传感器1005、显示单元1006、用户输入单元1007、接口单元1008、存储器1009、处理器1010、以及电源1011等部件。本领域技术人员可以理解,图10中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,电子设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
应理解的是,本发明实施例中,射频单元1001可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器1010处理;另外,将上行的数据发送给基站。通常,射频单元1001包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元1001还可以通过无线通信系统与网络和其他设备通信。
电子设备通过网络模块1002为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元1003可以将射频单元1001或网络模块1002接收的或者在存储器1009中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元1003还可以提供与电子设备1000执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元1003包括扬声器、蜂鸣器以及受话器等。
输入单元1004用于接收音频或视频信号。输入单元1004可以包括图形处理器(Graphics Processing Unit,GPU)10041和麦克风10042,图形处理器10041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元1006上。经图形处理器10041处理后的图像帧可以存储在存储器1009(或其它存储介质)中或者经由射频单元1001或网络模块1002进行发送。麦克风10042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元1001发送到移动通信基站的格式输出。
电子设备1000还包括至少一种传感器1005,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板10061的亮度,接近传感器可在电子设备1000移动到耳边时,关闭显示面板10061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器1005还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元1006用于显示由用户输入的信息或提供给用户的信息。显示单元1006可包括显示面板10061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板10061。
用户输入单元1007可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元1007包括触控面板10071以及其他输入设备10072。触控面板10071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板10071上或在触控面板10071附近的操作)。触控面板10071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1010,接收处理器1010发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板10071。除了触控面板10071,用户输入单元1007还可以包括其他输入设备10072。具体地,其他输入设备10072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板10071可覆盖在显示面板10061上,当触控面板10071检测到在其上或附近的触摸操作后,传送给处理器1010以确定触摸事件的类型,随后处理器1010根据触摸事件的类型在显示面板10061上提供相应的视觉输出。虽然在图10中,触控面板10071与显示面板10061是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板10071与显示面板10061集成而实现电子设备的输入和输出功能,具体此处不做限定。
接口单元1008为外部装置与电子设备1000连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元1008可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备1000内的一个或多个元件或者可以用于在电子设备1000和外部装置之间传输数据。
存储器1009可用于存储软件程序以及各种数据。存储器1009可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1009可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1010是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器1009内的软件程序和/或模块,以及调用存储在存储器1009内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器1010可包括一个或多个处理单元;优选的,处理器1010可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1010中。
电子设备1000还可以包括给各个部件供电的电源1011(比如电池),优选的,电源1011可以通过电源管理系统与处理器1010逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,电子设备1000包括一些未示出的功能模块,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种界面跳转方法,其特征在于,应用于应用程序的开发者工具包SDK,所述SDK中包括基于用户界面框架Flutter设计的动态化开源框架Fair,所述Fair用于将界面文件转换为对应的应用程序的界面,所述方法包括:
在即将跳转至目标界面时,获取所述目标界面对应的目标界面参数;
通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数;
当所述目标界面为非原生界面或者为原生界面但已经远程更新时,从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,并通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
2.根据权利要求1所述的方法,其特征在于,在所述通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数之后,所述方法还包括:
当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面文件,则通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
3.根据权利要求1所述的方法,其特征在于,在所述通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数之后,所述方法还包括:
当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面标识,则根据所述目标界面标识从所述应用程序的资源目录下加载所述目标界面对应的目标界面文件,以通过所述Fair将所述目标界面文件转换为所述目标界面。
4.根据权利要求1所述的方法,其特征在于,所述应用程序包括多个模块,所述模块具有对应的模块标识,所述模块包括多个界面,所述方法还包括:
获取待更新模块的待更新模块标识和所述待更新模块标识的版本信息;
将所述待更新模块标识和所述版本信息发送至服务器;
若所述服务器根据所述版本信息确定所述待更新模块标识对应的待更新模块不是最新的模块,则接收到所述服务器发送的模块下载地址;
根据所述模块下载地址从所述服务器下载所述待更新模块对应的最新的界面文件;
在所述SDK的缓存中保存所述界面文件,并根据所述界面文件在所述SDK的缓存中的位置生成对应的路径。
5.根据权利要求1所述的方法,其特征在于,所述目标传入参数包括目标界面标识,所述从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,包括:
若所述SDK的缓存中保存有所述目标界面标识对应的目标界面文件,则从所述SDK中获取所述目标界面标识对应的目标路径,以根据所述目标路径从所述SDK的缓存中加载所述目标界面标识对应的目标界面文件;
若所述SDK的缓存中没有保存所述目标界面标识对应的目标界面文件,则从服务器中远程加载所述目标界面标识对应的目标界面文件。
6.根据权利要求1所述的方法,其特征在于,界面参数包括模块标识和界面标识。
7.一种界面跳转装置,其特征在于,应用于应用程序的开发者工具包SDK,所述SDK中包括基于用户界面框架Flutter设计的动态化开源框架Fair,所述Fair用于将界面文件转换为对应的应用程序的界面,所述装置包括:
目标界面参数获取模块,用于在即将跳转至目标界面时,获取所述目标界面对应的目标界面参数;
目标传入参数确定模块,用于通过所述SDK的路由设计确定所述目标界面参数对应的目标传入参数;
第一目标界面跳转模块,用于当所述目标界面为非原生界面或者为原生界面但已经远程更新时,从服务器中远程加载或者从所述SDK中加载所述目标传入参数对应的目标界面文件,并通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二目标界面跳转模块,用于当所述目标界面为原生界面且未远程更新时,若所述目标传入参数为所述目标界面对应的目标界面文件,则通过所述Fair将所述目标界面文件转换为所述目标界面,以跳转至所述目标界面。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如权利要求1-6任一项所述的方法。
10.一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210689705.3A CN115113962A (zh) | 2022-06-17 | 2022-06-17 | 界面跳转方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210689705.3A CN115113962A (zh) | 2022-06-17 | 2022-06-17 | 界面跳转方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115113962A true CN115113962A (zh) | 2022-09-27 |
Family
ID=83328409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210689705.3A Pending CN115113962A (zh) | 2022-06-17 | 2022-06-17 | 界面跳转方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115113962A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112417337A (zh) * | 2020-11-27 | 2021-02-26 | 贝壳技术有限公司 | 页面跳转的实现方法、装置、电子设备及存储介质 |
CN112667263A (zh) * | 2021-01-05 | 2021-04-16 | 北京城市网邻信息技术有限公司 | Flutter组件的动态更新方法、装置、电子设备和存储介质 |
CN112905939A (zh) * | 2021-02-25 | 2021-06-04 | 平安普惠企业管理有限公司 | Html5页面资源的加载方法、装置、设备及存储介质 |
CN113377469A (zh) * | 2020-03-09 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 移动应用的业务界面显示方法、装置、终端及存储介质 |
CN113791790A (zh) * | 2021-08-18 | 2021-12-14 | 五八有限公司 | 一种应用程序更新方法、装置、电子设备及存储介质 |
CN114253586A (zh) * | 2021-12-08 | 2022-03-29 | 青岛海尔科技有限公司 | 用户界面的渲染方法和装置、存储介质及电子装置 |
-
2022
- 2022-06-17 CN CN202210689705.3A patent/CN115113962A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377469A (zh) * | 2020-03-09 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 移动应用的业务界面显示方法、装置、终端及存储介质 |
CN112417337A (zh) * | 2020-11-27 | 2021-02-26 | 贝壳技术有限公司 | 页面跳转的实现方法、装置、电子设备及存储介质 |
CN112667263A (zh) * | 2021-01-05 | 2021-04-16 | 北京城市网邻信息技术有限公司 | Flutter组件的动态更新方法、装置、电子设备和存储介质 |
CN112905939A (zh) * | 2021-02-25 | 2021-06-04 | 平安普惠企业管理有限公司 | Html5页面资源的加载方法、装置、设备及存储介质 |
CN113791790A (zh) * | 2021-08-18 | 2021-12-14 | 五八有限公司 | 一种应用程序更新方法、装置、电子设备及存储介质 |
CN114253586A (zh) * | 2021-12-08 | 2022-03-29 | 青岛海尔科技有限公司 | 用户界面的渲染方法和装置、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111049979B (zh) | 一种应用分享方法、电子设备及计算机可读存储介质 | |
US20220413670A1 (en) | Content Sharing Method and Electronic Device | |
CN109614061B (zh) | 显示方法及终端 | |
CN109857297B (zh) | 信息处理方法及终端设备 | |
WO2018077041A1 (zh) | 应用运行的方法及装置 | |
CN112084747B (zh) | 一种资源管理方法、装置、电子设备及存储介质 | |
WO2019149028A1 (zh) | 应用程序的下载方法及终端 | |
CN108270870B (zh) | 一种提示信息推送方法及装置 | |
CN112262556B (zh) | 模型文件的管理方法和终端设备 | |
CN112116690B (zh) | 视频特效生成方法、装置及终端 | |
WO2020181954A1 (zh) | 应用程序控制方法及终端设备 | |
CN110780940A (zh) | 应用程序加载方法、电子设备和存储介质 | |
CN111090489B (zh) | 一种信息控制方法及电子设备 | |
CN109284146B (zh) | 一种轻应用开启方法及移动终端 | |
CN111596875B (zh) | 屏幕扩展方法及电子设备 | |
CN114115895A (zh) | 一种代码查询方法、装置、电子设备和存储介质 | |
CN111399715B (zh) | 一种界面显示方法及电子设备 | |
CN111130995B (zh) | 图像控制方法、电子设备及存储介质 | |
CN110471682B (zh) | 一种应用程序更新方法及移动终端 | |
CN112181442B (zh) | 卸载页面显示方法、装置、终端、服务器及存储介质 | |
CN111026454A (zh) | 功能启动方法及终端设备 | |
CN108491225B (zh) | 一种更新包生成方法及移动终端 | |
CN115113962A (zh) | 界面跳转方法、装置、电子设备及可读存储介质 | |
CN110390065B (zh) | 网页获取方法、装置及系统 | |
CN108052416B (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 |