CN108021583B - 页面加载方法及客户端 - Google Patents

页面加载方法及客户端 Download PDF

Info

Publication number
CN108021583B
CN108021583B CN201610966419.1A CN201610966419A CN108021583B CN 108021583 B CN108021583 B CN 108021583B CN 201610966419 A CN201610966419 A CN 201610966419A CN 108021583 B CN108021583 B CN 108021583B
Authority
CN
China
Prior art keywords
client
page
preset
current
interface
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.)
Active
Application number
CN201610966419.1A
Other languages
English (en)
Other versions
CN108021583A (zh
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610966419.1A priority Critical patent/CN108021583B/zh
Publication of CN108021583A publication Critical patent/CN108021583A/zh
Application granted granted Critical
Publication of CN108021583B publication Critical patent/CN108021583B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请实施方式公开了一种页面加载方法及客户端,其中,所述应用程序运行于客户端中,所述应用程序中包括至少两个调用接口,所述至少两个调用接口对应至少两个不同的浏览控件;所述至少两个不同的浏览控件对应不同的系统版本;所述方法包括:识别所述客户端的当前系统版本;在所述至少两个不同的浏览控件中,确定与所述当前系统版本相适配的当前浏览控件;通过与所述当前浏览控件对应的调用接口调用所述当前浏览控件,并将所述当前浏览控件实例化,以加载预设资源标识指向的页面。本申请提供的一种页面加载方法、页面操作指令的处理方法及客户端,能够有效地实现网页页面与原生系统之间的数据通信。

Description

页面加载方法及客户端
技术领域
本申请涉及计算机技术领域,特别涉及一种页面加载方法及客户端。
背景技术
随着终端设备的不断发展,在终端设备上运行的应用程序也层出不穷。目前,在终端设备上运行的应用程序通常可以通过Hybrid混合开发模式进行开发。在Hybrid模式的应用程序运行时,通常需要涉及原生系统与网页页面之间的通信问题。
当前,在实现网页页面与原生系统之间通信时,一方面可以通过<a>标签中的href传递数据。具体地,网页页面可以将数据填充于href字段中,网页页面实现跳转时,原生系统可以获取href字段,从而解析出href字段中的数据。该方法很巧妙地解决了网页页面与原生系统之间的通信问题,但不足之处在于,该方法只有在页面跳转时才能让<a>便签生效,从而才能传递数据,因此存在很大的局限性。
另一方面可以通过创建iframe传递数据。具体地,网页页面可以用利用JavaScript动态创建iframe,iframe的id、name、src等字段中可以包含要传递的数据。这样,原生系统可以从iframe的上述字段中获取网页页面传递的数据。该方法不需要页面跳转就可以实现网页页面与原生系统之间的通信,克服了前述方法的局限性,但存在以下两个问题:第一、所有的iframe必须在网页页面加载完所有内容(包括图像、脚本文件、CSS文件等)后才能生效;第二、该方案只针对iOS系统中的UIWebView有效,对于iOS系统中的WKWebView是不生效的。也就是说,该方案在实际应用中也具备较大的局限性。
发明内容
本申请实施方式的目的是提供一种页面加载方法及客户端,能够有效地实现网页页面与原生系统之间的数据通信。
为实现上述目的,本申请一方面提供一种应用程序的页面加载方法,所述应用程序运行于客户端中,所述应用程序中包括至少两个调用接口,所述至少两个调用接口对应至少两个不同的浏览控件;所述至少两个不同的浏览控件对应不同的系统版本;所述方法包括:识别所述客户端的当前系统版本;在所述至少两个不同的浏览控件中,确定与所述当前系统版本相适配的当前浏览控件;通过与所述当前浏览控件对应的调用接口调用所述当前浏览控件,并将所述当前浏览控件实例化,以加载预设资源标识指向的页面。
为实现上述目的,本申请另一方面提供一种客户端,所述客户端中运行有预设应用程序,所述客户端包括:存储器,用于存储所述预设应用程序中包含的至少两个调用接口以及所述至少两个调用接口对应的至少两个不同的浏览控件,所述至少两个不同的浏览控件对应不同的系统版本;显示器,用于展示页面信息;处理器,用于识别所述客户端的当前系统版本;在所述至少两个不同的浏览控件中,确定与所述当前系统版本相适配的当前浏览控件;通过与所述当前浏览控件对应的调用接口调用所述当前浏览控件,并将所述当前浏览控件实例化,以加载预设资源标识指向的页面。
为实现上述目的,本申请另一方面提供一种客户端的页面操作指令的处理方法,所述方法包括:所述客户端的浏览器将当前页面中附带的交互信息提供给所述客户端的原生系统;其中,所述交互信息按照预设格式编写,以使得所述交互信息能被所述客户端的原生系统识别;所述交互信息包括操作指令和回调信息;所述操作指令指向所述客户端的原生系统功能;在所述客户端的原生系统中执行所述交互信息中的操作指令,并基于所述交互信息中的回调信息,将所述操作指令的执行结果反馈给所述浏览器。
为实现上述目的,本申请另一方面提供一种客户端,所述客户端包括:存储器,用于存储按照预设格式编写的交互信息;所述交互信息包括操作指令和回调信息;所述操作指令指向所述客户端的原生系统功能;处理器,用于从所述存储器中读取所述交互信息;在所述客户端的原生系统中执行所述交互信息中的操作指令,并基于所述交互信息中的回调信息,将所述操作指令的执行结果反馈给所述浏览器。
由上可见,本申请实施方式提供的一种页面加载方法及客户端,一方面能够针对不同的当前系统版本,将不同的浏览控件实例化,以加载预设资源标识指向的页面,从而能够使得同一个应用程序能够适用于多个不同版本的操作系统。另一方面通过按照预设格式编写的交互信息,所述客户端的原生系统可以执行所述交互信息中的操作指令,并基于所述交互信息中的回调信息,将所述操作指令的执行结果反馈给所述浏览器,从而能够实现原生系统与浏览器页面之间的通信,克服了现有技术中通信方法会有局限性的问题。
附图说明
为了更清楚地说明本申请实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施方式提供的一种页面加载方法的流程图;
图2为本申请实施方式中预设接口指令集的形成示意图;
图3为本申请实施方式提供的一种客户端的结构示意图;
图4为本申请实施方式提供的一种客户端中各个模块的交互示意图;
图5为本申请实施方式提供的一种页面操作指令的处理方法流程图;
图6为本申请实施方式提供的一种客户端的结构示意图;
图7为本申请实施方式提供的一种客户端中各个模块的交互示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都应当属于本申请保护的范围。
本申请实施方式提供一种应用程序的页面加载方法。所述应用程序可以运行于客户端中。在本实施方式中,所述客户端可以指具备数据存储和数据处理功能的电子设备。例如,所述客户端可以包括计算机(台式计算机、便携式计算机)、智能手机、平板电脑、智能可穿戴设备等。在所述客户端中可以安装驱动所述该客户端工作所必须的软件。所述软件例如可以包括操作系统、应用程序等。
在本实施方式中,所述应用程序可以指为了完成某项或某几项特定任务而被开发运行于操作系统上的计算机程序。所述应用程序可以基于操作系统进行开发,也可以基于网页进行开发,还可以基于操作系统和网页进行混合开发。
在本实施方式中,为了在应用程序中嵌入网页内容,可以通过客户端中操作系统自带的浏览控件来实现。具体地,在应用程序中可以设置指向所述浏览控件的调用接口。这样,在需要展示网页内容时,可以通过所述调用接口调用所述浏览控件,从而可以通过所述浏览控件显示网页内容。
在本实施方式中,所述浏览控件可以是一系列接口指令的集合。所述接口指令可以是按照预设格式进行编写的字符串。所述接口指令通常可以与执行动作相关联。例如,对于stringByEvaluatingJavaScriptFromString这样的接口指令,其关联的执行动作可以是在网页上执行一个脚本语言。这样,通过调用所述浏览控件中不同的接口指令,便可以实现不同的执行动作,从而能够进行数据的处理或者存储。
随着操作系统的版本更迭,操作系统自带的浏览控件也往往会随之更新。这样,对于不同的系统版本,对应的浏览控件也可能不同。例如,对于iOS系统而言,在iOS8.0版本前的系统中,采用的是UIWebView的浏览控件。而从iOS8.0版本开始的系统中,采用的是WKWebView的浏览控件。在不同的浏览控件中,与同一个执行动作相关联的接口指令可以不相同。针对不同版本的操作系统,通常需要开发不同的应用程序。这样,当应用程序在实现某一个执行动作时,才能够调用与当前系统版本相对应的接口指令。
在本实施方式中,为了使同一个应用程序能够适用于不同版本的操作系统,可以在应用程序中设置至少两个调用接口。其中,所述至少两个调用接口对应至少两个不同的浏览控件,所述至少两个不同的浏览控件对应不同的系统版本。这样,针对不同的系统版本,可以通过不同的调用接口来调用相应的浏览控件,从而使得同一个应用程序能够适用于不同版本的操作系统。
请参阅图1和图2。所述应用程序的页面加载方法可以包括以下几个步骤。
步骤S11:识别所述客户端的当前系统版本,并在所述至少两个不同的浏览控件中,确定与所述当前系统版本相适配的当前浏览控件。
在本实施方式中,识别所述客户端的当前系统版本的方式可以是通过操作系统中的预设应用程序编程接口(Application Programming Interface,API)来获取当前系统的版本号。客户端的操作系统中可以包括一系列用于获取客户端的硬件参数以及操作系统参数的API。所述硬件参数例如可以包括客户端屏幕的物理尺寸、客户端CPU的使用率、客户端存储器的使用率、客户端电池的剩余电量等。所述操作系统参数例如可以包括当前系统版本、当前进程数、当前网络类型等。例如,[[UIDevice currentDevice].systemVersionfloatValue]可以为iOS系统中获取当前系统版本号的API。
在本实施方式中,也可以通过读取操作系统的更新日志来识别所述客户端的当前系统版本。具体地,所述更新日志中可以按照时间顺序列出操作系统每次更新的版本信息。所述版本信息中可以包括本次更新的版本号。这样,通过读取所述更新日志中最近时间点对应的更新信息,便可以从读取的更新信息中提取出操作系统的当前版本号。
在本实施方式中,随着操作系统的版本更迭,操作系统自带的浏览控件也往往会随之更新。这样,对于不同的系统版本,对应的浏览控件也可能不同。例如,对于iOS系统而言,在iOS8.0版本前的系统中,采用的是UIWebView的浏览控件。而从iOS8.0版本开始的系统中,采用的是WKWebView的浏览控件。因此,操作系统的版本与操作系统自带的浏览控件之间可以具备对应关系。所述对应关系可以通过数据表的方式存储于客户端中。在所述数据表中,相对应的版本和浏览控件可以位于同一行。这样,确定与所述当前系统版本相适配的当前浏览控件的方式可以包括从所述数据表中读取与所述当前系统版本处于同一行的浏览控件,并将读取的浏览控件确定为所述当前浏览控件。例如,假设当前系统版本为iOS9.3.5,那么与该当前系统版本对应的当前浏览控件便可以为WKWebView。
步骤S13:通过与所述当前浏览控件对应的调用接口调用所述当前浏览控件,并将所述当前浏览控件实例化,以加载预设资源标识指向的页面。
在本实施方式中,由于在应用程序中包含了与不同浏览控件相对应的多个调用接口。因此,在确定了与当前系统版本相适配的当前浏览控件之后,可以通过与所述当前浏览控件对应的调用接口调用所述当前浏览控件。
在本实施方式中,与所述当前浏览控件对应的调用接口可以与所述浏览控件在客户端中的存储路径相关联。这样,调用所述当前浏览控件的方式可以为访问所述浏览控件在客户端中的存储路径,并从所述存储路径中读取所述浏览控件。
在本实施方式中,在调用了所述当前浏览控件之后,可以将所述当前浏览控件实例化。将所述当前浏览控件实例化可以指创建继承了所述当前浏览控件的对象。例如,假设所述当前系统版本为iOS7.0,那么所述当前浏览控件可以为UIWebView。这样便可以创建UIWebView对象,该UIWebView对象可以调用UIWebView中的各个接口指令。
在本实施方式中,在将所述当前浏览控件实例化之后,便可以通过实例化后的对象加载预设资源标识指向的页面。在本实施方式中,加载预设资源标识指向的页面的方式可以包括通过用于实现加载页面功能的接口指令向所述页面的后台服务器发起包含所述预设资源标识的访问请求。
在本实施方式中,所述用于实现加载页面功能的接口指令可以是所述当前浏览控件中预先设置的。例如,在UIWebView和WKWebView中,用于实现加载页面功能的接口指令均可以为loadRequest:[NSURLRequest requestWithURL:url]。
在本实施方式中,所述预设资源标识可以是按照预设规则进行编写的字符串。所述预设资源标识可以包括协议名称、服务器名称、路径和文件名中的至少一种。其中,所述协议名称可以表示处理所述访问请求所需的协议。该协议名称例如可以包括http协议、ftp协议、mailto协议等。所述服务器名称可以是所述页面的后台服务器在互联网中预先注册的域名。例如,所述服务器名称可以为www.jd.com。所述路径可以表示所述页面中的页面元素在所述后台服务器中的存储路径。所述存储路径可以包括至少一级目录,不同级目录之间可以通过“/”连接。例如,所述存储路径可以为“bao/uploaded/i6”。所述文件名可以是所述页面中的页面元素在后台服务器中进行存储的文件名。例如,所述文件名可以为“VXX_032175.jpg”。具体地,所述预设资源标识例如可以为统一资源定位符(Uniform ResourceLocator,URL)。
在本实施方式中,所述访问请求可以是根据预设格式进行编写的报文(message)。在所述访问请求中,可以包括预设数量的字段,各个字段均可以填充不同的内容。例如,所述访问请求中可以包括源IP字段、目的IP字段以及资源标识字段等。其中,源IP字段可以填充发送所述访问请求的客户端的IP地址,所述目的IP字段可以填充待接收所述访问请求的服务器的IP地址,所述资源标识字段中可以填充所述页面对应的预设资源标识。
这样,经过加载的所述页面便可以展示于所述客户端的显示器上。
在本申请一个具体应用场景中,智能手机中可以安装iOS9.0的操作系统,该操作系统可以自带WKWebView,在该操作系统中可以运行手机京东。在手机京东中可以包括与UIWebView和WKWebView分别对应的调用接口。在该应用场景中,可以通过iOS系统中的UIViewController通过[[UIDevice currentDevice].systemVersion floatValue]这个API获取iOS系统的版本号。获取的版本号可以为9.0,此时,UIViewController可以判断获取的版本号与8.0的大小关系。当获取的版本号大于或者等于8.0时,可以创建WKWebView对象;当获取的版本号小于8.0时,可以创建UIWebView对象。因此,在iOS9.0的操作系统中,可以创建WKWebView对象。当用户在手机京东中点击某个页面元素或者直接输入某个URL时,该页面元素对应的URL或者输入的URL便可以被WKWebView对象获取。这样,所述WKWebView对象便可以通过loadRequest:[NSURLRequest requestWithURL:url]来加载该URL,并基于该URL建立访问请求。所述访问请求中可以包括源IP字段、目的IP字段以及资源标识字段。其中,源IP字段可以填充智能手机在网络中的IP地址,所述目的IP字段可以填充所述URL指向的服务器的IP地址,所述资源标识字段中可以填充所述URL。这样便可以将所述访问请求发送至所述URL指向的服务器,从而从所述服务器处获取待加载的页面。在获取到待加载的页面之后,便可以作为手机京东的当前页面进行显示。
在本申请一个实施方式中,由于在iOS操作系统和Android操作系统中的浏览控件均不相同,从而导致在页面加载成功后,页面与操作系统之间的通信方式也不一致。为了使得页面向操作系统发送的指令能够被操作系统识别,可以在加载预设资源标识指向的页面之后,向所述页面发送用于表明当前系统版本的标识。所述用于表明当前系统版本的标识中可以包括系统类型和系统版本号。例如,所述标识可以为iOS9.0,其中iOS表明当前的操作系统为iOS系统,9.0表示iOS系统的版本号。具体地,在本实施方式中,所述用于表明当前系统版本的标识可以存放于页面的UserAgent字符串中。这样,在页面加载完成后,可以读取UserAgent字符串中的内容,从而获知当前的操作系统类型,进而在后续页面与操作系统的通信过程中,页面可以生成能够被操作系统识别的操作指令。
由于在不同的浏览控件中与同一个执行动作相关联的接口指令往往不相同。例如,对于在页面中执行脚本的这个执行动作,UIWebView中的接口指令是
stringByEvaluatingJavaScriptFromString,而在WKWebView中的接口指令是evaluateJavaScript:completionHandler。这样,在本申请一个实施方式中,可以对不同浏览控件中的接口指令进行统一,使得统一后的接口指令中与同一个执行动作相关联的接口指令只有一个。例如,对于在页面中执行脚本这种执行动作,统一后的接口指令可以是EvaluateJavaScriptFromString。在本实施方式中,统一后的接口指令可以称为通用接口指令。设置通用接口指令的意义在于,在应用程序的开发过程中,无需考虑应用程序将在哪个版本的操作系统中运行,而是可以采用通用接口指令进行开发。
在本实施方式中,各个通用接口指令均可以与执行动作相关联。因此,在需要执行加载所述预设资源标识的动作时,可以确定该动作对应的通用接口指令。通用接口指令只是将与同一执行动作相关联的多个接口指令进行统一化的形式,但通用接口指令本身并不能执行相应的动作。最终还是需要通过浏览控件中的接口指令在实现执行动作的过程。因此,在本实施方式中,可以从预设接口指令集中确定所述通用接口指令对应的接口指令子集。其中,所述预设接口指令集中的各个接口指令子集可以是按照执行动作进行划分的,属于同一执行动作的接口指令可以位于同一个接口指令子集中。例如,对于在页面中执行脚本的这个执行动作,统一后的通用接口指令可以是EvaluateJavaScriptFromString。然而在UIWebView中的接口指令是stringByEvaluatingJavaScriptFromString,在WKWebView中的接口指令是evaluateJavaScript:completionHandler。因此,上述在UIWebView中和在WKWebView中的两个接口指令可以位于同一个接口指令子集中。包含了在UIWebView中和在WKWebView中的两个接口指令的接口指令子集便可以是EvaluateJavaScriptFromString这个通用接口指令对应的接口指令子集。
在本实施方式中,确定了通用接口指令对应的接口指令子集后,还需要从所述接口指令子集中确定最终用于实现执行动作的目标接口指令。所述目标接口指令可以是操作系统的浏览控件中原始定义的接口指令。具体地,从所述接口指令子集中确定最终用于实现执行动作的目标接口指令的方式可以包括从所述接口指令子集中提取与所述当前浏览控件相匹配的目标接口指令。例如,所述当前浏览控件为WKWebView,那么便可以从所述接口指令子集中提取属于WKWebView中的接口指令,并将提取的接口指令作为所述目标接口指令。这样,便可以通过所述目标接口指令加载所述预设资源标识指向的页面。例如,所述目标接口指令可以是loadRequest:[NSURLRequest requestWithURL:url],通过该目标接口指令,便可以建立包含所述预设资源标识的访问请求,从而可以根据所述访问请求从服务器处获取待加载的页面。
在本申请一个实施方式中,所述预设接口指令集可以是开发应用程序过程中建立的,并且存储于所述应用程序中的。具体地,在开发应用程序过程中,首先可以获取各个浏览控件分别对应的目标接口指令集。例如,在开发iOS系统下的应用程序时,可以首先获取UIWebVIew和WKWebView分别对应的目标接口指令集。在所述目标接口指令集中,可以包括用于实现不同执行动作的至少一个目标接口指令。获取目标接口指令集的方式可以包括从操作系统的软件开发工具包(Software Development Kit,SDK)中读取浏览控件的目标接口指令集。
在本实施方式中,各个目标接口指令集中的目标接口指令均可以是按照实现的执行动作进行划分的。为了将同一执行动作对应的接口指令进行统一,在本实施方式中可以将各个所述目标接口指令集中属于同一类型的目标接口指令划分于同一接口指令子集中。所述属于同一类型的目标接口指令实现的执行动作均相同。这样,处于同一接口指令子集中的目标接口指令实现的执行动作均相同。
在本实施方式中,在将各个目标接口指令集中的目标接口指令重新划分为多个接口指令子集后,可以为各个所述接口指令子集分配对应的通用接口指令。其中,所述通用接口指令可以是开发应用程序的人员拟定的。这样,各个接口指令子集便可以与各自的通用接口指令相关联。
在本实施方式中,可以将各个所述接口指令子集的集合确定为所述预设接口指令集。在所述预设接口指令集中的各个接口指令均可以与两个标识相绑定。其中一个标识可以用于表明实现的执行动作。该标识可以为上述的通用接口指令。在同一个接口指令子集中的接口指令对应的该标识可以相同。另一个标识则可以用于表明所属的浏览控件。该标识可以用当前系统的版本号来表示。这样,通过确定的通用接口指令以及确定的当前系统的版本号,便可以唯一确定能够实现执行动作的目标接口指令,从而可以通过确定的目标接口指令来执行相应的动作。
在具体实现过程中,以iOS系统为例,iOS系统可以包括UIWebView和WKWebView这两个浏览控件。在对这两个浏览控件中的接口指令进行统一处理时,可以通过自定义的协议来规定统一处理后的通用接口指令。所述自定义的协议例如可以为FusionWebViewProtocol,在该FusionWebViewProtocol中可以包括多个通用接口指令,每个通用接口指令均可以与一个执行动作相关联。在所述FusionWebViewProtocol中,各个通用接口指令应当能够指向两个浏览控件中的实际接口指令。在具体实现时,可以自定义两个子类:FusionWebView和FusionWKView,其中,FusionWebView可以继承于UIWebView,FusionWKView可以继承于WKWebView。这样,在两个子类中通过设置代理的方式,从而能够实现从通用接口指令指向实际接口指令的过程。具体地,在FusionWebView中可以实现FusionWebViewProtocol和UIWebViewProtocol这两个代理,而在FusionWKView中可以实现FusionWebViewProtocol和WKNavigationDelegate这两个代理。其中,FusionWebViewProtocol可以实现通用接口指令,UIWebViewProtocol可以实现UIWebView中的实际接口指令,WKNavigationDelegate可以实现WKWebView中的实际接口指令。这样,通过自定义子类和设置代理的方式,便可以实现从通用接口指令指向实际接口指令的过程。
请参阅图3和图4。本申请还提供一种客户端,所述客户端中运行有预设应用程序。所述客户端可以包括存储器110、显示器130和处理器150。
其中,所述存储器110,用于存储所述预设应用程序中包含的至少两个调用接口以及所述至少两个调用接口对应的至少两个不同的浏览控件,所述至少两个不同的浏览控件对应不同的系统版本;
所述显示器130,用于展示页面信息;
所述处理器150,用于识别所述客户端的当前系统版本;在所述至少两个不同的浏览控件中,确定与所述当前系统版本相适配的当前浏览控件;通过与所述当前浏览控件对应的调用接口调用所述当前浏览控件,并将所述当前浏览控件实例化,以加载预设资源标识指向的页面。
在本实施方式中,所述存储器110可以是用于保存信息的记忆设备。在数字系统中,能保存二进制数据的设备可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也可以为存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也可以叫存储器,如内存条、TF卡等。
所述显示器130可以为将一定的电子文件通过特定的传输设备显示到屏幕上再反射到人眼的显示工具。所述显示器可以包括液晶LCD显示屏、阴极射线管CRT显示屏、发光二极管LED显示屏等。
所述处理器150可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本申请并不作限定。
上述实施方式公开的客户端,其存储器110、显示器130和处理器150实现的具体功能,可以与本申请中应用程序的页面加载方法实施方式相对照解释,可以实现本申请的应用程序的页面加载方法实施方式并达到方法实施方式的技术效果。
本申请还提供一种客户端的页面操作指令的处理方法。请参阅图5。所述方法可以包括以下几个步骤。
步骤S21:所述客户端的浏览器将当前页面中附带的交互信息提供给所述客户端的原生系统;其中,所述交互信息按照预设格式编写,以使得所述交互信息能被所述客户端的原生系统识别;所述交互信息包括操作指令和回调信息;所述操作指令指向所述客户端的原生系统功能。
在本实施方式中,所述当前页面可以是通过将客户端中的浏览控件进行实例化后,加载预设资源标识得到的。在本实施方式中,所述客户端可以指具备数据存储和数据处理功能的电子设备。例如,所述客户端可以包括计算机(台式计算机、便携式计算机)、智能手机、平板电脑、智能可穿戴设备等。在所述客户端中可以安装驱动所述该客户端工作所必须的软件。所述软件例如可以包括操作系统、应用程序等。
在本实施方式中,为了在应用程序中嵌入网页内容,可以通过客户端中操作系统自带的浏览控件来实现。具体地,在应用程序中可以设置指向所述浏览控件的调用接口。这样,在需要展示网页内容时,可以通过所述调用接口调用所述浏览控件,从而可以通过所述浏览控件显示网页内容。
在本实施方式中,在所述页面加载成功之后,在所述页面上可以产生指向客户端原生系统的操作指令。指向客户端原生系统是指所述操作指令可以与客户端原生系统进行交互。所述操作指令可以是客户端的用户与页面进行交互过程中生成的。例如,所述页面中可以设置与用户进行交互的按钮。通过所述按钮,可以是让客户端振动一下,或者从客户端处获取指纹信息,或者从客户端处获取定位信息。
在本实施方式中,与所述操作指令可以绑定回调信息。具体地,所述回调信息可以是回调函数的标识,也可以是回调函数本身。其中,所述回调函数的标识可以是指向函数库中回调函数的编码。所述回调函数可以用于让客户端原生系统向所述当前页面返回与所述操作指令相对应的数据。例如,当所述操作指令为让客户端振动,那么通过所述回调函数返回的数据可以是振动成功的确认数据。当所述操作指令为从客户端出获取指纹信息,那么通过所述回调函数返回的数据可以是采集的指纹信息。
在本实施方式中,所述操作指令和与所述操作指令相绑定的回调信息可以包含于按照预设格式进行编写的交互信息中。所述预设格式例如可以是字符串格式。由于字符串能够被不同语言环境的系统识别,因此页面和原生系统均可以识别按照字符串格式进行编写的交互信息。所述字符串格式还可以预先指定所述交互信息中的组成部分以及各个组成部分的排列顺序。例如,所述交互信息中可以包括用于获取客户端信息的操作指令、用于表示客户端原生系统执行所述操作指令成功的状态码以及与所述操作指令相绑定的回调函数的标识。在生成所述交互信息时,所述交互信息中上述各个字符串的排列顺序可以是由所述预设格式指定的。
在本实施方式中,所述预设格式可以是页面与原生系统之间预先约定的格式。当页面中生成的交互信息按照所述预设格式进行编写时,原生系统在读取所述交互信息之后,可以将所述交互信息解析为所述原生系统能够识别的目标信息。需要说明的是,在约定所述预设格式时,对于页面中相同的交互信息,所述原生系统也可以解析出相同的目标信息。比如页面写入的数据和原生系统之间约定采用某相同的字符编码格式。如此,所述交互信息与目标信息之间可以具备一一对应的关系。而在页面中,对于指向原生系统功能的相同操作指令,根据所述预设格式进行编写后的交互信息也是相同的。例如,当页面中生成需要终端设备进行振动的操作指令时,该操作指令可以为“shake#”。这样,在原生系统读取所述操作指令时,可能可以得到的为“shake#”字符串。如此原生系统便可以启动相应的功能。当然,页面中采用的字符编码格式与原生系统的字符编码格式可能不相同。页面部分写入的操作指令,读取后可能不会完全还原。但可以根据预先约定将得到的这个数据按照原生系统的编码规则,对应至原生系统中的终端设备震动功能。具体的,例如,页面端提供的操作指令为“shake#”,原生系统从预设数据容器得到该操作指令,按照原生系统的字符编码格式解析得到的为“3t?8y”。如此,可以预先设置原生系统读取到“3t?8y”时,表示指向原生系统中终端设备的震动功能。
在本实施方式中,所述交互信息可以由页面和原生系统均能识别的语言进行编写。例如,所述语言可以是JavaScript语言、PHP语言、Lua语言等。页面在生成所述交互信息后,可以将所述交互信息存储于预设数据容器中。原生系统可以按照一定的时间周期,定期地从所述预设数据容器中读取生成的交互信息。具体地,原生系统可以在页面上执行用于获取交互信息的代码,以从所述预设数据容器中读取交互信息。所述代码同样可以是由页面和原生系统均能识别的语言进行编写。例如,所述代码可以是通过JavaScript语言进行编写。原生系统可以通过预设接口指令,执行该通过JavaScript语言编写的代码。具体地,所述预设接口指令可以是原生系统中预先设定的。例如,对于UIWebView而言,执行JavaScript代码的接口指令可以是stringByEvaluatingJavaScriptFromString;对于WKWebView而言,执行JavaScript代码的接口指令可以是evaluateJavaScript:completionHandler。这样,在页面上执行了代码之后,原生系统便可以获取所述预设数据容器中的交互信息。
在本实施方式中,原生系统获取了所述交互信息之后,可以执行所述交互信息中携带的操作指令。所述操作指令例如可以是获取当前的地理位置坐标或者采集用户的指纹信息。在实际应用场景中,为了减小终端设备主线程的负载,执行所述操作指令的过程可以在终端设备的子线程中完成。当子线程执行完所述操作指令后,可以将执行的结果通过交互信息中携带的回调信息反馈给所述页面。需要说明的是,执行的结果可以是例如坐标值、指纹信息这样的具体数据,也可以是表示执行完成或者执行失败的状态数据。例如,所述操作指令是让终端设备震动。那么在子线程执行完该操作指令,使得终端设备震动之后,执行的结果可以是表示“震动成功”的状态数据,该状态数据可以是一个用于表示执行成功的标识。
在本实施方式中,当子线程处理完操作指令,得到执行结果之后,可以由主线程执行交互信息中的回调函数,从而将执行结果通过回调函数反馈至页面处。
步骤S23:在所述客户端的原生系统中执行所述交互信息中的操作指令,并基于所述交互信息中的回调信息,将所述操作指令的执行结果反馈给所述浏览器。
在本实施方式中,客户端原生系统获取了所述交互信息之后,可以从所述交互信息中提取操作指令。这样,所述客户端原生系统便可以执行所述操作指令。例如,所述操作指令为振动客户端,那么客户端原生系统在执行所述操作指令时,便可以使得客户端发生振动。又例如,当所述操作指令为采集指纹时,所述客户端原生系统便可以调用客户端的指纹采集模块执行指纹采集的流程。
在本实施方式中,在执行所述操作指令之后,可以得到与所述操作指令相对应的数据。这样便可以将执行得到的数据通过与所述操作指令相绑定的回调函数反馈至所述当前页面处。例如,当所述操作指令为让客户端振动,那么通过所述回调函数返回的数据可以是振动成功的确认数据。当所述操作指令为从客户端出获取指纹信息,那么通过所述回调函数返回的数据可以是采集的指纹信息。
在具体实现过程中,客户端原生系统在执行预设脚本时,可以通过主线程进行执行。而对获取到的交互信息进行提取时,可以通过子线程来提取。这样,可以有效地发挥客户端多线程处理的特性,同时又不影响主线程执行与页面相关的操作,提高了页面与客户端原生系统之间通信的效率。
在本申请一个实施方式中,所述交互信息在生成之后可以存储于页面的预设数据容器中。具体地,所述预设数据容器可以是所述页面中生成的一个队列,也可以是所述页面中的堆或者栈,还可以是存储于所述页面中,并且可以被读写的文件。以队列为例,所述队列可以在页面的Head标签中生成。具体地,在所述页面的Head标签中可以执行用于创建队列的脚本语言,从而可以在页面的Head标签中生成队列。所述客户端的浏览器可以将当前页面中附带的交互信息存储于所述队列中。这样,所述客户端的原生系统可以从所述队列中读取所述交互信息。具体地,读取所述交互信息的方式可以包括通过在所述当前页面中执行的预设脚本,从所述预设数据容器中读取所述交互信息中的操作指令。所述预设脚本例如可以是通过JavaScript编写的脚本。
在本申请一个实施方式中,可以通过在所述当前页面中执行的预设脚本,从所述预设数据容器中读取所述操作指令。所述预设脚本可以通过目标接口指令执行,所述目标接口指令可以为客户端操作系统自带的浏览控件中的接口指令。在实际应用场景中,不同的操作系统版本通常可以对应不同的浏览控件。由于在不同的浏览控件中与同一个执行动作相关联的接口指令往往不相同。例如,对于在页面中执行预设脚本的这个执行动作,UIWebView中的接口指令是stringByEvaluatingJavaScriptFromString,而在WKWebView中的接口指令是evaluateJavaScript:completionHandler。这样,在本实施方式中,可以对不同浏览控件中的接口指令进行统一,使得统一后的接口指令中与同一个执行动作相关联的接口指令只有一个。例如,对于在页面中执行脚本这种执行动作,统一后的接口指令可以是EvaluateJavaScriptFromString。在本实施方式中,统一后的接口指令可以称为通用接口指令。设置通用接口指令的意义在于,在应用程序的开发过程中,无需考虑应用程序将在哪个版本的操作系统中运行,而是可以采用通用接口指令进行开发。
在本实施方式中,各个通用接口指令均可以与执行动作相关联。因此,在执行预设脚本的动作时,可以确定用于执行所述预设脚本的通用接口指令。通用接口指令只是将与同一执行动作相关联的多个接口指令进行统一化的形式,但通用接口指令本身并不能执行相应的动作。最终还是需要通过浏览控件中的接口指令在实现执行动作的过程。因此,在本实施方式中,可以从预设接口指令集中确定所述通用接口指令对应的接口指令子集。其中,所述预设接口指令集中的各个接口指令子集可以是按照执行动作进行划分的,属于同一执行动作的接口指令可以位于同一个接口指令子集中。例如,对于在页面中执行脚本的这个执行动作,统一后的通用接口指令可以是EvaluateJavaScriptFromString。然而在UIWebView中的接口指令是stringByEvaluatingJavaScriptFromString,在WKWebView中的接口指令是evaluateJavaScript:completionHandler。因此,上述在UIWebView中和在WKWebView中的两个接口指令可以位于同一个接口指令子集中。包含了在UIWebView中和在WKWebView中的两个接口指令的接口指令子集便可以是EvaluateJavaScriptFromString这个通用接口指令对应的接口指令子集。
在本实施方式中,确定了通用接口指令对应的接口指令子集后,还需要从所述接口指令子集中确定最终用于实现执行动作的目标接口指令。所述目标接口指令可以是操作系统的浏览控件中原始定义的接口指令。具体地,从所述接口指令子集中确定最终用于实现执行动作的目标接口指令的方式可以包括从所述接口指令子集中提取与所述客户端原生系统的当前版本相匹配的目标接口指令。例如,所述当前浏览控件为WKWebView,那么便可以从所述接口指令子集中提取属于WKWebView中的接口指令,并将提取的接口指令作为所述目标接口指令。这样,便可以通过所述目标接口指令在页面中执行预设脚本。
在本申请一个实施方式中,所述预设接口指令集可以是开发应用程序过程中建立的,并且存储于所述应用程序中的。具体地,在开发应用程序过程中,首先可以获取预设数量的目标接口指令集,各个所述目标接口指令集分别与所述客户端原生系统的不同版本相对应。例如,在开发iOS系统下的应用程序时,可以首先获取UIWebVIew和WKWebView分别对应的目标接口指令集。在所述目标接口指令集中,可以包括用于实现不同执行动作的至少一个目标接口指令。获取目标接口指令集的方式可以包括从操作系统的软件开发工具包(Software Development Kit,SDK)中读取浏览控件的目标接口指令集。
在本实施方式中,各个目标接口指令集中的目标接口指令均可以是按照实现的执行动作进行划分的。为了将同一执行动作对应的接口指令进行统一,在本实施方式中可以将各个所述目标接口指令集中属于同一类型的目标接口指令划分于同一接口指令子集中。所述属于同一类型的目标接口指令实现的执行动作均相同。这样,处于同一接口指令子集中的目标接口指令实现的执行动作均相同。
在本实施方式中,在将各个目标接口指令集中的目标接口指令重新划分为多个接口指令子集后,可以为各个所述接口指令子集分配对应的通用接口指令。其中,所述通用接口指令可以是开发应用程序的人员拟定的。这样,各个接口指令子集便可以与各自的通用接口指令相关联。
在本实施方式中,可以将各个所述接口指令子集的集合确定为所述预设接口指令集。在所述预设接口指令集中的各个接口指令均可以与两个标识相绑定。其中一个标识可以用于表明实现的执行动作。该标识可以为上述的通用接口指令。在同一个接口指令子集中的接口指令对应的该标识可以相同。另一个标识则可以用于表明所属的浏览控件。该标识可以用当前系统的版本号来表示。这样,通过确定的通用接口指令以及确定的当前系统的版本号,便可以唯一确定能够实现执行动作的目标接口指令,从而可以通过确定的目标接口指令来执行相应的动作。
在本申请一个实施方式中,所述预设数据容器可以是messageQueue,在所述messageQueue中可以按照交互信息生成的时间顺序依次排列各个交互信息。那么当客户端原生系统从所述预设数据容器中读取所述交互信息之后,为了避免下次读取时重复处理已经读取过的交互信息,可以将读取的所述交互信息从所述预设数据容器中清除;或者为读取的所述交互信息添加表征已处理的标识。其中,所述表征已处理的标识例如可以为1,表征未处理的标识例如可以为0。这样,通过识别所述预设数据容器中存放的交互信息对应的标识,从而可以确定当前的交互信息是否被处理。这样便可以在读取时仅读取未被处理过的交互信息。
在本申请一个实施方式中,加载的页面中随时都有可能产生操作指令,这样在所述预设数据容器中也可能随时生成交互信息。为了能够及时对生成的交互信息进行处理,在本实施方式中可以设置读取交互信息的周期。所述周期例如可以为200ms。这样,客户端原生系统便可以按照预设时间周期从所述预设数据容器中读取所述交互信息,从而能够及时处理页面中生成的操作指令。
在一个具体的场景中,当页面生成时,该页面中的预设数据容器也随之生成。在该页面中产生的指向客户端原生系统的操作指令均可以通过交互信息的方式,被写入所述预设数据容器中。在页面生成时,所述客户端的原生系统便会按照固定的周期对所述页面中的预设数据容器进行访问,以读取所述预设数据容器中的交互信息。
在本具体场景中,所述页面可以是手机京东客户端中的一个页面。用户通过点击手机京东中的某个商品的图片时,可以生成该商品的详情页面。在该详情页面生成时,可以在该详情页面的Head标签中生成MassageQueue。在该详情页面中产生的指向原生系统的操作指令均可以通过交互信息的方式写入MassageQueue中。所述操作指令例如可以为采集用户指纹信息、录入用户的语音信息等。在该商品的详情页面生成时,原生系统可以每隔200ms访问一次该详情页面中的MassageQueue,从而可以及时地读取MassageQueue中存储的交互信息。
请参阅图6和图7。本申请还提供一种客户端。所述客户端可以包括存储器210和处理器230。
其中,所述存储器210,用于存储按照预设格式编写的交互信息;所述交互信息包括操作指令和回调信息;所述操作指令指向所述客户端的原生系统功能。
所述处理器230,用于从所述存储器中读取所述交互信息;在所述客户端的原生系统中执行所述交互信息中的操作指令,并基于所述交互信息中的回调信息,将所述操作指令的执行结果反馈给所述浏览器。
在本实施方式中,所述存储器210可以是用于保存信息的记忆设备。在数字系统中,能保存二进制数据的设备可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也可以为存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也可以叫存储器,如内存条、TF卡等。
所述处理器230可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本申请并不作限定。
上述实施方式公开的客户端,其存储器210和处理器230实现的具体功能,可以与本申请中页面操作指令的处理方法实施方式相对照解释,可以实现本申请的页面操作指令的处理方法实施方式并达到方法实施方式的技术效果。
由上可见,本申请实施方式提供的一种页面加载方法、页面操作指令的处理方法及客户端,一方面能够针对不同的当前系统版本,将不同的浏览控件实例化,以加载预设资源标识指向的页面,从而能够使得同一个应用程序能够适用于多个不同版本的操作系统。另一方面通过按照预设格式编写的交互信息,所述客户端的原生系统可以执行所述交互信息中的操作指令,并基于所述交互信息中的回调信息,将所述操作指令的执行结果反馈给所述浏览器,从而能够实现原生系统与浏览器页面之间的通信,克服了现有技术中通信方法会有局限性的问题。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对客户端的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

Claims (12)

1.一种应用程序的页面加载方法,所述应用程序运行于客户端中,其特征在于,所述应用程序中包括至少两个调用接口,所述至少两个调用接口对应至少两个不同的浏览控件;所述至少两个不同的浏览控件对应不同的系统版本;所述方法包括:
识别所述客户端的当前系统版本;
在所述至少两个不同的浏览控件中,确定与所述当前系统版本相适配的当前浏览控件;
通过与所述当前浏览控件对应的调用接口调用所述当前浏览控件,并将所述当前浏览控件实例化,以在所述应用程序中加载预设资源标识指向的页面,以使得所述客户端中的原生系统基于所述页面中附带的交互信息与浏览器进行数据通信;
其中,所述客户端中的原生系统基于所述页面中附带的交互信息与浏览器进行数据通信包括:
所述客户端的浏览器将当前页面中附带的交互信息提供给所述客户端的原生系统;其中,所述交互信息按照预设格式编写,以使得所述交互信息能被所述客户端的原生系统识别;所述交互信息包括操作指令和回调信息;所述操作指令指向所述客户端的原生系统功能;所述当前页面为通过所述客户端中的浏览控件进行实例化后,加载预设资源标识得到并在所述客户端中的应用程序中展示的;
在所述客户端的原生系统中执行所述交互信息中的操作指令,并基于所述交互信息中的回调信息,将所述操作指令的执行结果反馈给所述浏览器。
2.根据权利要求1所述的方法,其特征在于,所述浏览控件包括UIWebView或WKWebView。
3.根据权利要求1所述的方法,其特征在于,在加载预设资源标识指向的页面之后,所述方法还包括:
向所述页面发送用于表明当前系统版本的标识。
4.根据权利要求1所述的方法,其特征在于,加载预设资源标识指向的页面具体包括:
确定加载所述预设资源标识的通用接口指令;
从预设接口指令集中确定所述通用接口指令对应的接口指令子集;
从所述接口指令子集中提取与所述当前浏览控件相匹配的目标接口指令,并通过所述目标接口指令加载所述预设资源标识指向的页面。
5.根据权利要求4所述的方法,其特征在于,所述预设接口指令集按照下述方式确定:
获取各个浏览控件分别对应的目标接口指令集,所述目标接口指令集中包括至少一个目标接口指令;
将各个所述目标接口指令集中属于同一类型的目标接口指令划分于同一接口指令子集中,并为各个所述接口指令子集分配对应的通用接口指令;
将各个所述接口指令子集的集合确定为所述预设接口指令集。
6.根据权利要求1所述的方法,其特征在于,所述客户端的浏览器将当前页面中附带的交互信息提供给所述客户端的原生系统具体包括:
所述客户端的浏览器将当前页面中附带的交互信息存储于预设数据容器中;
所述客户端的原生系统从所述预设数据容器中读取所述交互信息。
7.根据权利要求6所述的方法,其特征在于,所述客户端的原生系统从所述预设数据容器中读取所述交互信息具体包括:
所述客户端的原生系统通过在所述当前页面中执行的预设脚本,从所述预设数据容器中读取所述交互信息中的操作指令。
8.根据权利要求7所述的方法,其特征在于,所述预设脚本通过目标接口指令执行,所述目标接口指令按照下述方式确定:
确定用于执行所述预设脚本的通用接口指令;
从预设接口指令集中确定所述通用接口指令对应的接口指令子集;
从所述接口指令子集中提取与所述客户端原生系统的当前版本相匹配的目标接口指令。
9.根据权利要求8所述的方法,其特征在于,所述预设接口指令集按照下述方式确定:
获取预设数量的目标接口指令集,各个所述目标接口指令集分别与所述客户端原生系统的不同版本相对应,各个所述目标接口指令集中均包括至少一个目标接口指令;
将各个所述目标接口指令集中属于同一类型的目标接口指令划分于同一接口指令子集中,并为各个所述接口指令子集分配对应的通用接口指令;
将各个所述接口指令子集的集合确定为所述预设接口指令集。
10.根据权利要求6所述的方法,其特征在于,在所述客户端的原生系统从所述预设数据容器中读取所述交互信息之后,所述方法还包括:
所述客户端的原生系统将读取的所述交互信息从所述预设数据容器中清除;或者
所述客户端的原生系统为读取的所述交互信息添加表征已处理的标识。
11.根据权利要求6所述的方法,其特征在于,所述客户端的原生系统从所述预设数据容器中读取所述交互信息具体包括:
所述客户端的原生系统按照预设时间周期从所述预设数据容器中读取所述交互信息。
12.一种客户端,所述客户端中运行有预设应用程序,其特征在于,所述客户端包括:
存储器,用于存储所述预设应用程序中包含的至少两个调用接口以及所述至少两个调用接口对应的至少两个不同的浏览控件以及所述客户端的浏览器发送的当前页面中附带的交互信息,所述至少两个不同的浏览控件对应不同的系统版本;所述交互信息按照预设格式编写的交互信息;所述交互信息包括操作指令和回调信息;所述操作指令指向所述客户端的原生系统功能;所述当前页面为通过所述客户端中的浏览控件进行实例化后,加载预设资源标识得到并在所述客户端中的应用程序中展示的;
显示器,用于展示页面信息;处理器,用于识别所述客户端的当前系统版本;在所述至少两个不同的浏览控件中,确定与所述当前系统版本相适配的当前浏览控件;通过与所述当前浏览控件对应的调用接口调用所述当前浏览控件,并将所述当前浏览控件实例化,以在所述应用程序中加载预设资源标识指向的页面,以使得所述客户端中的原生系统基于所述页面中附带的交互信息与浏览器进行数据通信;还用于从所述存储器中读取所述交互信息;在所述客户端的原生系统中执行所述交互信息中的操作指令,并基于所述交互信息中的回调信息,将所述操作指令的执行结果反馈给所述浏览器。
CN201610966419.1A 2016-10-28 2016-10-28 页面加载方法及客户端 Active CN108021583B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610966419.1A CN108021583B (zh) 2016-10-28 2016-10-28 页面加载方法及客户端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610966419.1A CN108021583B (zh) 2016-10-28 2016-10-28 页面加载方法及客户端

Publications (2)

Publication Number Publication Date
CN108021583A CN108021583A (zh) 2018-05-11
CN108021583B true CN108021583B (zh) 2022-05-06

Family

ID=62084570

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610966419.1A Active CN108021583B (zh) 2016-10-28 2016-10-28 页面加载方法及客户端

Country Status (1)

Country Link
CN (1) CN108021583B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874466B (zh) * 2018-06-08 2021-10-29 Oppo(重庆)智能科技有限公司 控件调用方法、电子装置及计算机可读存储介质
CN108897605B (zh) * 2018-07-24 2022-03-08 北京万相融通科技股份有限公司 一种桌面应用程序嵌入网页的方法及装置
CN109460253A (zh) * 2018-11-12 2019-03-12 郑州云海信息技术有限公司 基于iframe实现系统文件版本控制的方法及装置
CN109857515B (zh) * 2018-12-20 2023-07-18 深圳前海微众银行股份有限公司 桥接通信方法、装置、设备及计算机可读存储介质
CN109783755A (zh) * 2018-12-20 2019-05-21 平安科技(深圳)有限公司 浏览器操作模拟方法、装置、可读存储介质及终端设备
CN111506846B (zh) * 2019-01-30 2023-05-02 杭州海康威视数字技术股份有限公司 Web页面生成方法、装置、电子设备及存储介质
CN110515742A (zh) * 2019-07-17 2019-11-29 网易(杭州)网络有限公司 终端中的通信方法及装置
CN112559928B (zh) * 2020-12-24 2023-09-26 成都新希望金融信息有限公司 基于混合开发的页面处理方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102830992A (zh) * 2012-07-31 2012-12-19 北京奇虎科技有限公司 插件加载方法及系统
US9130899B1 (en) * 2011-04-27 2015-09-08 Cisco Technology, Inc. Integrated user interface for unified communications applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9130899B1 (en) * 2011-04-27 2015-09-08 Cisco Technology, Inc. Integrated user interface for unified communications applications
CN102830992A (zh) * 2012-07-31 2012-12-19 北京奇虎科技有限公司 插件加载方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
支持个性化服务的移动门户系统的设计与开发;闫东旭等;《计算机应用与软件》;20150115;第24-33页 *

Also Published As

Publication number Publication date
CN108021583A (zh) 2018-05-11

Similar Documents

Publication Publication Date Title
CN108021583B (zh) 页面加载方法及客户端
US11461111B2 (en) Method for running applets, and electronic device
US20240095043A1 (en) Execution of sub-application processes within application program
US11119812B2 (en) Method and device for processing application program page according to a common interface container
CN106843869B (zh) 一种前端开发工程化系统和方法
WO2018077085A1 (zh) 应用程序处理方法、装置及存储介质
EP3822828A2 (en) Method, apparatus, device and storage medium for determining page theme and computer program product
CN110020323B (zh) 混合应用的页面切换方法、系统、计算机设备及存储介质
CN109308241B (zh) 监听应用程序启动流程方法、装置、终端设备和存储介质
CN106878361B (zh) 一种终端应用页面的调试方法、装置及客户端
CN106951248B (zh) 添加代码的方法、装置、可读存储介质和计算设备
CN111740948B (zh) 数据包发布方法、动态更新方法、装置、设备及介质
CN113468448A (zh) 页面渲染方法及装置
CN108197024B (zh) 嵌入式浏览器调试方法、调试终端及计算机可读存储介质
CN110297624B (zh) 基于electron框架的Widget系统的实现方法及采用该系统的电视机
CN114036439A (zh) 网站搭建方法、装置、介质及电子设备
CN107908679B (zh) 脚本语句转换方法、装置及计算机可读存储介质
CN112506854A (zh) 页面模板文件的存储和页面生成方法、装置、设备及介质
CN111523065B (zh) 富文本数据处理方法、装置、电子设备及计算机存储介质
CN107016262A (zh) 应用程序权限管理方法及客户端
CN110083407B (zh) 小程序中步骤条的实现方法、装置、电子设备及存储介质
CN111158777A (zh) 组件调用方法、装置及计算机可读存储介质
CN112764746A (zh) 数据处理方法、装置、电子设备及存储介质
JP2006276939A (ja) 仮想マシンのプログラム起動方法およびクライアントサーバシステム
CN111857782B (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
GR01 Patent grant
GR01 Patent grant