CN106325948B - 一种移动平台支持已有Web应用的方法及装置 - Google Patents
一种移动平台支持已有Web应用的方法及装置 Download PDFInfo
- Publication number
- CN106325948B CN106325948B CN201610744425.2A CN201610744425A CN106325948B CN 106325948 B CN106325948 B CN 106325948B CN 201610744425 A CN201610744425 A CN 201610744425A CN 106325948 B CN106325948 B CN 106325948B
- Authority
- CN
- China
- Prior art keywords
- script
- local function
- module
- application program
- function
- 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
Links
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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种移动平台支持已有Web应用的方法及装置,属于互联网领域;所述方法包括:应用程序在网页中注入与网页地址对应保存的脚本,并显示网页;应用程序接收到对脚本的触发信息后产生查找本地函数请求,并将查找本地函数请求发送给系统组件;系统组件根据查找本地函数请求调用本地函数生成操作指令,将操作指令发送给信息安全设备;并接收信息安全设备返回的响应数据,将响应数据中的操作结果作为本地函数返回值;应用程序在网页中注入并执行获取本地函数返回值脚本,获取本地函数返回值,根据本地函数返回值更新并显示网页。本发明实现了将已有Web应用无缝的移植到移动平台。
Description
技术领域
本发明涉及互联网领域,尤其涉及一种移动平台支持已有Web应用的方法及装置。
背景技术
现在Windows平台可以支持的应用程序种类非常多,并且技术非常成熟,但移动平台支持的应用较少,主要原因是支持Windows平台的应用程序不能直接应用到移动平台,且如果将已有Web应用移植到移动平台需要对已有Web应用进行很大的修改,耗费较多的时间和精力。例如,在Windows平台Web应用提供商可以通过ActiveX技术(ActiveX是一个开放的集成平台,为开发人员、用户和Web生产商提供了一个快速而简便的在Internet和Intranet创建程序集成和内容的方法)实现读取信息安全设备信息并更新网页的应用程序,但现有技术中并没有实现移动平台上执行同样操作的应用程序。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种在移动平台支持已有Web应用的方法及装置。
本发明提供的一种移动平台支持已有Web应用的方法,包括:
步骤S1、应用程序在网页中注入与网页地址对应保存的脚本,并显示网页;
步骤S2、应用程序接收到对脚本的触发信息后产生查找本地函数请求,并将查找本地函数请求发送给系统组件;
具体的,查找本地函数请求具体包括本地函数名和函数参数。
进一步的,脚本包括接口函数和交互函数;
相应的,步骤S2具体包括:应用程序接收到对脚本中的所述接口函数的触发信息,所述接口函数调用所述交互函数产生查找本地函数请求,并将查找本地函数请求发送给系统组件。
步骤S3、系统组件根据查找本地函数请求调用本地函数生成操作指令,将操作指令发送给信息安全设备;并接收信息安全设备返回的响应数据,将响应数据中的操作结果作为本地函数返回值;
具体的,系统组件从查找本地函数请求中获取本地函数名和函数参数,根据本地函数名和函数参数调用本地函数。
步骤S4、应用程序在网页中注入并执行获取本地函数返回值脚本,获取本地函数返回值,根据本地函数返回值更新并显示网页。
具体的,应用程序中存储有过滤网址以及与所述过滤网址对应脚本。
相应的,步骤S1之前还包括:应用程序判断过滤网址中是否包括网页地址,是则在网页中注入与网页地址对应脚本,并显示网页,否则结束。
优选的,步骤S1之前还包括:应用程序判断网页地址是否合法,是则根据所述网页地址生成并加载网络请求,当网络请求加载完成之后执行步骤S1;否则结束。
优选的,步骤S1之前还包括:应用程序判断是否有信息安全设备与移动设备处于连接状态,是则执行步骤S1,否则与信息安全设备建立连接,执行步骤S1。
优选的,步骤S3中接收信息安全设备返回的响应数据之后,将响应数据中的操作结果作为本地函数的返回值之前还包括:系统组件根据响应数据中的标志位判断信息安全设备是否成功根据操作指令完成相应操作,是则从响应数据中获取操作结果,将操作结果作为本地函数的返回值,否则结束。
优选的,步骤S1之前还包括:应用程序进行初始化,即从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本,并将过滤网址和脚本对应地保存到应用程序中。
进一步的,应用程序进行初始化之前还包括:应用程序获取初始化标志位,并根据初始化标志位判断是否已进行初始化,是则执行步骤S1;否则应用程序从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本存储到应用程序中,并更新初始化标志位,执行步骤S1。
本实施例提供一种移动平台支持已有Web应用的装置,包括:应用程序和系统组件;
应用程序包括:
第一注入模块,用于在网页中注入与网页地址对应保存的脚本,并显示网页;
查找本地函数请求生成模块,用于接收到对第一注入模块注入的脚本的触发信息产生查找本地函数请求;
具体的,查找本地函数请求生成模块生成的查找本地函数请求具体包括本地函数名和函数参数。
第一发送模块,用于将查找本地函数请求生成模块生成的查找本地函数请求发送给所述系统组件;
第二注入模块,用于在网页中注入获取本地函数返回值脚本;
执行模块,用于执行所述第二注入模块注入的获取本地函数返回值脚本,获取本地函数返回值;
显示模块,用于根据执行模块获取到的本地函数返回值更新并显示网页。
所述系统组件包括:
调用模块,用于接收应用程序发送的查找本地函数请求;根据所述查找本地函数请求调用本地函数生成操作指令;
调用模块,具体用于从查找本地函数请求中获取本地函数名和函数参数,根据本地函数名和函数参数调用本地函数生成操作指令。
第二发送模块,用于将所述调用模块14生成的操作指令发送给信息安全设备;
接收模块,用于接收信息安全设备返回的响应数据;
获取操作结果模块,用于将接收模块接收到的响应数据中的操作结果作为本地函数返回值。
需要说明的是,脚本包括接口函数、交互函数;
查找本地函数请求生成模块,具体用于接收对第一注入模块注入的脚本中的接口函数的触发信息,接口函数调用交互函数产生查找本地函数请求。
优选的,应用程序还包括:
存储模块:用于存储有过滤网址以及与所述过滤网址对应的脚本。
第一判断模块,用于判断所述存储模块中存储的过滤网址中是否包括所述网页地址;
第一注入模块,用于若第一判断模块判定过滤网址中包括所述网页地址时在网页中注入与所述网页地址对应脚本。
优选的,应用程序还包括:
第二判断模块,用于判断网页地址是否合法;
加载模块,用于若第二判断模块判定网页地址合法时生成并加载网络请求;
所述第一注入模块,当所述加载模块加载网络请求完成后在网页中注入与所述网页地址对应脚本。
优选的,应用程序还包括:
第三判断模块,用于判断是否有信息安全设备与移动设备处于连接状态;
第一注入模块,用于若第三判断模块判定有信息安全设备与移动设备处于连接状态时在网页中注入与所述网页地址对应的脚本;还用于若所述第三判断模块判定没有信息安全设备与移动设备处于连接状态时与所述信息安全设备建立连接,并在网页中注入与所述网页地址对应的脚本。
优选的,系统组件还包括:
第四判断模块,用于根据接收模块接收到的响应数据中的标志位判断信息安全设备是否成功根据操作指令完成相应操作;
获取操作结果模块,用于若所述第四判断模块判定信息安全设备成功根据操作指令完成相应操作后从响应数据中获取操作结果,将操作结果作为本地函数的返回值。
优选的,应用程序还包括:
初始化模块,用于从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本,并将过滤网址和脚本对应地保存到应用程序中。
初始化模块具体包括:
第二判断子模块,用于获取初始化标志位,并根据初始化标志位判断是否已进行初始化;
存储子模块,用于若第二判断子模块判定没有初始化时从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本存储到应用程序中,并更新初始化标志位;
第一注入模块,用于若所述第二判断子模块判定已进行初始化后在网页中注入与网页地址对应保存的脚本,并显示网页。
本发明与现有技术相比,具有以下优点:
当用户在移动平台中使用应用程序进行访问Web应用时,应用程序加载网页的过程中在网页中注入脚本,脚本调用本地函数访问信息安全设备信息,更新网页内容,实现将Windows平台已有的Web应用无缝的移植到移动平台。
附图说明
图1是本发明实施例1提供的一种移动平台支持已有Web应用的方法的流程图;
图2是本发明实施例2提供的一种移动平台支持已有Web应用的方法的流程图;
图3是本发明实施例3提供的一种移动平台支持已有Web应用的方法的流程图;
图4是本发明实施例4提供的一种移动平台支持已有Web应用的装置的方框图。
具体实施方式
为更进一步阐述本发明为达成预定目的所采取的技术手段,以下结合附图及较佳实施例,对依据发明提出的一种移动平台支持已有Web应用的方法。
实施例1
一种在移动平台支持已有Web应用的方法。如图1所示,具体包括:
步骤S1、应用程序在网页中注入与网页地址对应保存的脚本,并显示网页;
步骤S2、应用程序接收到对脚本的触发信息后产生查找本地函数请求,并将查找本地函数请求发送给系统组件;
具体的,查找本地函数请求具体包括本地函数名和函数参数。
进一步的,脚本包括接口函数和交互函数;
相应的,步骤S2具体包括:应用程序接收到对脚本中的所述接口函数的触发信息,所述接口函数调用所述交互函数产生查找本地函数请求,并将查找本地函数请求发送给系统组件。
步骤S3、系统组件根据查找本地函数请求调用本地函数生成操作指令,将操作指令发送给信息安全设备;并接收信息安全设备返回的响应数据,将响应数据中的操作结果作为本地函数返回值;
具体的,系统组件从查找本地函数请求中获取本地函数名和函数参数,根据本地函数名和函数参数调用本地函数。
步骤S4、应用程序在网页中注入并执行获取本地函数返回值脚本,获取本地函数返回值,根据本地函数返回值更新并显示网页。
具体的,应用程序中存储有过滤网址以及与所述过滤网址对应脚本。
相应的,步骤S1之前还包括:应用程序判断网页地址是否合法,是则根据所述网页地址生成并加载网络请求,当网络请求加载完成之后执行步骤S1;否则结束。
优选的,步骤S1之前还包括:应用程序判断是否有信息安全设备与移动设备处于连接状态,是则执行步骤S1,否则与信息安全设备建立连接,执行步骤S1。
优选的,步骤S3中接收信息安全设备返回的响应数据之后,将响应数据中的操作结果作为本地函数的返回值之前还包括:系统组件根据响应数据中的标志位判断信息安全设备是否成功根据操作指令完成相应操作,是则从响应数据中获取操作结果,将操作结果作为本地函数的返回值,否则结束。
优选的,步骤S1之前还包括:应用程序进行初始化,即从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本,并将过滤网址和脚本对应地保存到应用程序中。
进一步的,应用程序进行初始化之前还包括:应用程序获取初始化标志位,并根据初始化标志位判断是否已进行初始化,是则执行步骤S1;否则应用程序从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本存储到应用程序中,并更新初始化标志位,执行步骤S1。
实施例2
本实施例以Android平台中支持已有Web应用的方法为例进行说明。本方法为基于Android平台WebView控件,用户在移动设备上访问已有Web应用时,应用程序在加载预设的过滤网页时加入对应的脚本,当用户触发该脚本时,脚本调用本地函数访问信息安全设备,并保存本地函数的返回值,应用程序注入并执行获取本地函数返回值脚本,根据获取到的本地函数返回值更新并显示网页。信息安全设备中包括用户的个人信息,如姓名,性别,ID,照片。下面以用户在移动平台上访问Web应用将信息安全设备中的用户名自动填入网页中的为firstname的文本域中为例进行介绍,如图2所示,包括:
步骤101、应用程序初始化。
应用程序初始化,即从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本,并将过滤网址和脚本对应地保存到应用程序中。
所述脚本具体为JavaScript脚本。
本实施例中,步骤101之前还包括:
步骤101-1、应用程序读取应用配置信息,根据应用配置信息中的初始化标志位判断是否已进行初始化,是则执行步骤101,否则执行步骤101-2;
具体地,应用程序启动后,在AppDelegate入口处进入以下方法:
(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions在上述方法中,应用程序通过NSUserDefaults类的类方法standardUserDefaults对象获取NSUserDefaults对象,应用程序通过NSUserDefaults对象的boolForKey方法获取应用配置信息中初始化标志位的布尔值,根据初始化标志位的布尔值判断应用程序是否已进行初始化;例如,本实施例中,初始化标志位布尔值为YES则判定应用程序已进行初始化,初始化标志位布尔值为NO则判定应用程序未进行初始化;
步骤101-2、应用程序从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本,并将过滤网址和脚本对应地存储到应用程序的应用配置信息中;
具体地,本实施例中,应用程序从获取应用配置信息中获取与过滤网址对应的脚本;例如,滤网址为http://www.sampleurl.com,相应的与过滤网址对应的脚本为:
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionmyFunction(){\document.getElementsByName(\"firstname\")[0].value+=abc();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";
\script.text=functionabc(){\abc2();\returngetabc2Ret();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionabc2(){\variframe=document.createElement(\"IFRAME\");\iframe.setAttribute(\"src\",\"objc://doFunc3\");\document.documentElement.appendChild(iframe);\iframe.parentNode.removeChild(iframe);\iframe=null;\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
本实施例中,应用程序通过NSUserDefault对象的setObject:forKey方法以转换得到的NSString类型的过滤网址为键,以转换得到的NSString类型的脚本为值,调用NSUserDefault对象的synchronize方法将NSString类型的过滤网址和脚本存储到应用配置信息中;
步骤102、应用程序显示用户界面,接收用户输入的网页地址;
步骤103、应用程序根据用户输入的网页地址生成网络请求;
具体地,本实施例中,应用程序接收用户输入的网页地址,根据该网页地址产生CustomWebView对象,根据该对象生成网络请求;
步骤104、应用程序判断该网页地址是否合法,是则根据网页请求生成并加载网络请求,执行步骤105,否则提示网页地址无效,返回步骤102;
具体地,本实施例中,该网络请求为一个CustomWebView对象,应用程序调用CustomWebView控件的loadUrl方法加载该网络请求;CustomWebView控件为Android平台的系统控件,用于显示网页内容;
具体地,本实施例中,该步骤包括:
步骤104-1、应用程序在loadUrl方法中根据CustomWebView对象中的网页地址成员变量判断该网页地址是否合法,设置该方法的返回值。
本实施例中,应用程序根据RFC1738Uniform Resource Locators(URL)标准判断网页地址的合法性;例如,若该网页地址为http://www.sampleurl.com,则该网页地址合法,设置该方法的返回值为YES,若该网页地址为htps://error.com,则该网页地址不合法,设置该方法的返回值为NO;
步骤104-2、应用程序判断该方法的返回值是否为预设值,是则继续加载网络请求,执行步骤105,否则提示网页地址无效,返回步骤102;
本实施例中,应用程序判断该方法的返回值是否为YES,是则继续加载网络请求,执行步骤105,否则提示网页地址无效,返回步骤102;
步骤105、应用程序判断预存的过滤网址中是否包括该网页地址,是则执行步骤106,否则结束;
具体地,系统在加载完网络请求后,在CustomWebView对象结束处进入-notifyPageFinished方法,在该方法中应用程序检查应用程序配置信息的过滤网址是否包括该网页地址,是则执行步骤106,否则结束;
步骤106、应用程序判断是否有信息安全设备与移动设备处于连接状态,是则执行步骤107,否则与信息安全设备建立连接,执行步骤107;
若信息安全设备具体为蓝牙key,相应的,步骤106具体包括,
步骤106-1、应用程序获取已配对的信息安全设备的设备信息列表;
具体的,应用程序调用系统API getDefaultAdapter,获取设备上默认的蓝牙适配器BluetoothAdapter对象m_DefaultAdapter。调用蓝牙适配器m_DefaultAdapter的成员函数getBondedDevices得到已配对的第一设备信息列表L1。
本实施例中,设备信息列表具体为设备名称列表。
步骤106-2、应用程序从设备信息列表中获取满足预设条件的设备信息作当前设备信息;
具体的,应用程序对第一设备信息列表L1中所有的设备名称进行判断,若以FT_开头的设备名称则认为是飞天的蓝牙KEY设备,保存至第二设备名称列表L2。如果第二设备名称列表L2为空,则认为没有当前没有可操作的蓝牙KEY,结束。如果第二设备名称列表L2变量数大于1,则接收用户选择的需要操作的蓝牙KEY作为默认操作设备m_BluetoothDev,获取默认操作设备的唯一标识符作为当前设备信息。如果第二设备名称列表L2变量数等于1,则获取第二设备名称列表L2中的设备名称对应的蓝牙Key作为默认操作设备m_BluetoothDev,获取默认操作设备的唯一标识符作为当前设备信息。
步骤106-3、应用程序获取与所述当前设备信息相关联的信息安全设备的套接字,判断套接字是否为空,是则判定当前信息安全设备与移动设备不处于连接状态,否则判定当前信息安全设备与移动设备处于连接状态。
具体的,应用程序调用m_BluetoothDev的成员函数createInsecureRfcommSocketToServiceRecord,参数为默认操作设备的唯一标识符,函数执行成功后获得BluetoothSocket的对象蓝牙套接字m_BluetoothSocket,如果蓝牙套接字m_BluetoothSocket为空,则应用程序判定信息安全设备与移动设备不处于连接状态,应用程序调用m_BluetoothSocket的成员函数connect与默认操作设备建立连接。蓝牙套接字m_BluetoothSocket不为空否则判定默认操作设备与移动设备处于连接状态。
步骤107、应用程序从应用配置信息中读取与该网页地址对应的脚本;
与网页地址对应的脚本的函数包括供网页的调用的接口函数和交互函数,进一步的,交互函数具体用于生成查找本地函数请求,还用于根据本地函数返回值更新网页;
例如:用户输入的网页地址为http://www.sampleurl.com则与网页地址http://www.sampleurl.com对应的JavaScript脚本JavaScript脚本为:
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionmyFunction(){\document.getElementsByName(\"firstname\")[0].value+=abc();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";
\script.text=functionabc(){\abc2();\returngetabc2Ret();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionabc2()
{\variframe=document.createElement(\"IFRAME\");\iframe.setAttribute(\"src\",\"objc://doFunc3\");\document.documentElement.appendChild(iframe);\iframe.parentNode.removeChild(iframe);\iframe=null;\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
上述JavaScript脚本中的函数:供网页中的调用的JavaScript接口函数为myFunction、交互函数为abc和abc2
步骤108、应用程序在网页中注入读取到的与该网页地址对应的脚本
具体地,应用程序在网页中调用控件CustomWebView的loadUrl(String)方法注入读取到的JavaScript脚本;
为了更清楚的说明本实施例:具体的,本实施例中注入脚本之前的网页为:
html>
<head>
<scripttype="text/javascript">
functionmyFunction()
{
document.getElementsByName("firstname")[0].value+="feitian";
}
</script>
</head>
<body>
<form>
<inputtype="button"onclick="myFunction()"value="调用函数">
</form>
<formid="form1"action="test.do"method="post">
<inputtype="text"name="firstname"value="">
</form>
</body>
</html>
进一步的,注入脚本之后的网页具体为:
步骤109、应用程序设置系统组件可以响应于该脚本。
调用CustomWebView的成员函数getSettings,得到WebSettings对象。然后调用WebSettings的成员函数setJavaScriptEnabled,使CustomWebView对象可以响应JavaScript脚本。
步骤110:应用程序接收到对脚本的触发信息后产生查找本地函数请求,并将查找本地函数请求发送给系统组件
系统组件具体为CustomWebView控件。查找本地函数请求具体包括本地函数名和函数参数。CustomWebView控件创建自定义的JavaScriptInterface类,类中实现本地函数doFunc3。doFunc3为本地用于获取用户名的函数。然后再调用CustomWebView的成员函数addJavascriptInterface(参数一,参数二)注册本地函数,参数一为JavaScriptInterface类,参数二为字符串“objc”。
当用户点击网页中某个按钮或者网页加载完毕时,触发了JavaScript脚本中的接口函数myFunction,该接口函数调用JavaScript脚本的交互函数abc获取用户名,并将交互函数abc的返回值设置为网页中需填入用户名的对应位置,交互函数abc调用交互函数abc2产生查找本地函数请求,本实施例中,获取到查找本地函数请求为objc://doFunc3,向应用程序中的CustomWebView控件发送查找本地函数请求;
步骤111、系统组件根据查找本地函数请求调用本地函数生成操作指令;
例如,应用程序根据查找本地函数请求objc://doFunc3获取本地Object-C函数doFunc3获取用户名,Object-C函数doFunc3为本地用于获取用户名的函数。系统组件根据获取用户名的函数doFunc3生成获取用户名的APDU指令,APDU指令即为操作指令。
步骤112,系统组件将操作指令发送给信息安全设备,并接收信息安全设备的响应数据。
具体的,系统组件调用m_BluetoothSocket的成员函数getOutputStream,执行成功后得到OutputStream对象m_os。调用m_BluetoothSocket的成员函数getInputStream,执行成功后得到InputStream对象m_is,并通过m_os的成员函数write向信息安全设备发送获取用户名的APDU指令,发送完成后创建子线程,在子线程中调用m_is的成员函数read来从信息安全设备中获取响应数据。
步骤113、系统组件根据响应数据中的标志位判断信息安全设备是否已根据操作指令成功执行相应操作,是则从响应数据中获取操作结果作为本地函数返回值,执行步骤114,否则结束。
具体的,系统组件获取响应数据中的标志位SW,若SW=0X9000则判定信息安全设备根据操作指令成功执行相应操作,否则判定信息安全设备根据操作指令没有成功执行相应操作;
步骤114、应用程序在网页中注入并执行获取本地函数返回值的脚本得到本地函数返回值,并根据本地函数返回值更新并显示网页,结束。
具体的,应用程序在本地函数执行完毕后再次通过CustomWebView的loadUrl(String)方法在网页中注入获取本地函数返回结果的脚本,函数名为getabc2Ret,Object-C中firstname变量的值通过getabc2Ret()函数返回,交互函数acb得到用户名,进而更新到网页中。
本实施例中,获取本地函数返回值的JavaScript脚本具体为:
"varscript=document.createElement(\"script\");
script.type=\"text/javascript\";script.text=functiongetabc2Ret(){return\"%@\";};
\document.getElementsByTagName(\"head\")[0].appendChild(script);,firstname";
具体的,应用程序将本地函数返回值的更新到网页中名字为firstname的文本域中。
实施例3
本实施例以iOS平台中支持已有Web应用的方法为例进行说明。本方法基于iOS平台UIWebView控件,用户在移动设备上访问Web应用时,应用程序在加载预设的过滤网页时加入指定的脚本,接收到对脚本的触发信息后,脚本调用本地函数访问信息安全设备,并保存本地函数的返回值,应用程序注入并执行获取本地函数返回值脚本,根据获取到的本地函数返回值更新并显示网页。信息安全设备中包括用户的个人信息,如姓名,性别,ID,照片。下面以用户在移动平台上访问Web应用将信息安全设备中的用户名自动填入网页中的firstname的文本域中为例进行介绍,如图3所示,包括:
步骤201、应用程序初始化。
应用程序初始化,即从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本,并将过滤网址和脚本对应地保存到应用程序中。
步骤202、应用程序显示用户界面,接收用户输入的网页地址;
步骤203、应用程序根据用户输入的网页地址生成网络请求;
具体地,本实施例中,应用程序接收用户输入的网页地址,根据该网页地址产生NSURL对象,利用该对象生成网络请求;具体地,应用程序利用NSURL类的方法URLWithString将用户输入的网页地址封装成NSURL对象,利用NSURLRequest类的方法requestWithURL产生一个网络请求,该网络请求为一个NSURLRequest对象;
步骤204、应用程序判断网页地址是否合法,是则根据网页地址生成并加载网络请求,执行步骤205;否则提示网页地址无效,返回步骤202。
具体地,应用程序调用UIWebView控件的loadRequest方法加载该网络请求;UIWebView控件为iOS平台的系统控件,用于显示网页内容;
具体地,本实施例中,该步骤包括:
步骤204-1、应用程序在UIWebViewDelegate入口处进入以下方法:-(BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest*)requestnavigationType:(UIWebViewNavigationType)navigationType
具体地,UIWebViewDelegate是应用程序内部的一个对象,由应用程序实现;
步骤204-2、应用程序在该方法中根据NSURLRequest对象中的网页地址成员变量判断该网页地址是否合法,设置该方法的返回值;
本实施例中,应用程序根据RFC1738Uniform Resource Locators(URL)标准判断网页地址的合法性;例如,若该网页地址为http://www.sampleurl.com,则该网页地址合法,设置该方法的返回值为YES,若该网页地址为htps://error.com,则该网页地址不合法,设置该方法的返回值为NO;
步骤204-3、应用程序判断该方法的返回值是否为YES,是则根据网络请求加载网络请求,执行步骤205,否则提示网页地址无效,返回步骤202;
步骤205、应用程序判断预存的过滤网址中是否包括过滤网址,是则执行步骤206,否则结束;
具体地,系统在加载完网络请求获取到网络数据后,在UIWebViewDelegate对象结束处进入-(void)webViewDidFinishLoad:(UIWebView*)webView方法,在该方法中应用程序检查该网页地址是否属于应用程序配置信息的过滤网址,是则执行步骤206,否则结束;
步骤206、应用程序判断是否有信息安全设备与移动设备处于连接状态,是则执行步骤207,否则与信息安全设备建立连接,执行步骤207;
步骤207、应用程序从应用配置信息中读取与该网页地址对应的脚本;
与网页地址对应的JavaScript脚本的函数包括供网页中的调用的JavaScript接口函数、与该接口函数对应的交互函数;
例如:用户输入的url为http://www.sampleurl.com则与网页地址http://www.sampleurl.com对应的JavaScript脚本JavaScript脚本为:
varscript=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionmyFunction(){\document.getElementsByName(\"firstname\")[0].value+=abc();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";
\script.text=functionabc(){\abc2();\returngetabc2Ret();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionabc2()
{\variframe=document.createElement(\"IFRAME\");\iframe.setAttribute(\"src\",\"objc://doFunc3\");\document.documentElement.appendChild(iframe);\iframe.parentNode.removeChild(iframe);\iframe=null;\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
上述JavaScript脚本中的函数:供网页中的调用的JavaScript接口函数为myFunction、与该接口函数对应的交互函数为abc和abc2
步骤208、应用程序在网页中注入读取到的与网页地址对应的脚本;
具体地,应用程序在网页中调用控件UIWebView的-(NSString*)stringByEvaluatingJavaScriptFromString:(NSString*)script方法注入读取到的JavaScript脚本;
步骤209、应用程序接收到对脚本的触发信息后调用脚本中的函数产生查找本地函数请求,并将查找本地函数请求发送给系统组件;
本实施例中查找本地函数请求具体为:应用程序按照预设格式产生的NSURLRequest对象,包括协议类型、本地函数名和参数;系统组件为UIWebView控件。
当用户点击网页中某个按钮或者网页加载完毕时,触发了JavaScript脚本中的接口函数myFunction,该接口函数调用JavaScript脚本的交互函数abc获取用户名,并将交互函数abc的返回值设置为网页中需填入用户名的对应位置,交互函数abc调用交互函数abc2获取对应的查找本地函数请求,本实施例中,获取到查找本地函数请求为objc://doFunc3,向UIWebView控件发送查找本地函数请求;
步骤210:系统组件根据查找本地函数请求查找并调用本地函数生成操作指令;
具体地,UIWebView控件到查找本地函数请求后,进入UIWebViewDelegate对象的-(BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest*)requestnavigationType:(UIWebViewNavigationType)navigationType方法,在该方法中根据本地函数名和函数参数查找并调用该本地函数,保存本地函数返回值;例如,应用程序根据查找本地函数请求objc://doFunc3获取本地Object-C函数doFunc3获取用户名,Object-C函数doFunc3为本地用于获取用户名的函数。系统组件获取用户名的函数doFunc3生成获取用户名的APDU指令。
步骤211、系统组件将操作指令发送给信息安全设备,并接收信息安全设备的响应数据。
具体的,系统组件通过m_peripheral成员函数readValueForCharacteristic:writeChristic向信息安全设备发送获取用户名的APDU指令。下发完成后通过m_peripheral的成员函数writeValueForCharacteristic:readChristic来从信息安全设备中获取响应数据;
步骤212、系统组件根据响应数据中的标志位判断信息安全设备是否已根据操作指令成功执行相应操作,是则从响应数据中获取操作结果作为本地函数返回值,执行步骤213,否则结束。
具体的,系统组件检查SW是否正确,如果SW=0x9000,既APDU执行成功,返回的数据既是我们要的随机数,将随机数作为doFunc3返回值。如果SW不等于0x9000,既doFunc3执行失败。
步骤213、应用程序在网页中注入并执行获取本地函数返回值脚本获取本地函数返回值,并根据本地函数的返回值更新并显示网页,结束。
具体的,应用程序在本地函数执行完毕后再次通过UIWebView的-(NSString*)stringByEvaluatingJavaScriptFromString:(NSString*)script方法在网页中注入获取本地函数返回结果的JavaScript脚本,函数名为getabc2Ret,Object-C中firstname变量的值通过getabc2Ret()函数返回,交互函数acb得到用户名,进而更新到网页中。
本实施例中,获取本地函数返回值的JavaScript脚本具体为:
"varscript=document.createElement(\"script\");
script.type=\"text/javascript\";script.text=functiongetabc2Ret(){return\"%@\";};
\document.getElementsByTagName(\"head\")[0].appendChild(script);,firstname";
具体的,应用程序获取本地函数返回值的JavaScript脚本的返回值更新到网页中名字为firstname的文本域中。
实施例4
本实施例提供一种移动平台支持已有Web应用的装置,如图4所示,包括:应用程序和系统组件;
应用程序包括:
第一注入模块11,用于在网页中注入与网页地址对应保存的脚本,并显示网页;
查找本地函数请求生成模块12,用于接收到对第一注入模块11注入的脚本的触发信息产生查找本地函数请求;
具体的,查找本地函数请求生成模块12生成的查找本地函数请求具体包括本地函数名和函数参数。
第一发送模块13,用于将查找本地函数请求生成模块12生成的查找本地函数请求发送给所述系统组件;
第二注入模块18,用于在网页中注入获取本地函数返回值脚本;
执行模块19,用于执行所述第二注入模块18注入的获取本地函数返回值脚本,获取本地函数返回值;
显示模块20,用于根据执行模块19获取到的本地函数返回值更新并显示网页。
所述系统组件包括:
调用模块14,用于接收应用程序发送的查找本地函数请求;根据所述查找本地函数请求调用本地函数生成操作指令;
调用模块14具体用于从查找本地函数请求中获取本地函数名和函数参数,根据本地函数名和函数参数调用本地函数生成操作指令。
第二发送模块15,用于将所述调用模块14生成的操作指令发送给信息安全设备;
接收模块16,用于接收信息安全设备返回的响应数据;
获取操作结果模块17,用于将接收模块16接收到的响应数据中的操作结果作为本地函数返回值。
需要说明的是,脚本包括接口函数、交互函数;
查找本地函数请求生成模块12,具体用于接收对第一注入模块11注入的脚本中的接口函数的触发信息,接口函数调用交互函数产生查找本地函数请求。
优选的,应用程序还包括:
存储模块:用于存储有过滤网址以及与所述过滤网址对应的脚本。
第一判断模块,用于判断所述存储模块中存储的过滤网址中是否包括所述网页地址;
第一注入模块11,用于若第一判断模块判定过滤网址中包括所述网页地址时在网页中注入与所述网页地址对应脚本。
优选的,应用程序还包括:
第二判断模块,用于判断网页地址是否合法;
加载模块,用于若第二判断模块判定网页地址合法时生成并加载网络请求;
所述第一注入模块,当所述加载模块加载网络请求完成后在网页中注入与所述网页地址对应脚本。
优选的,应用程序还包括:
第三判断模块,用于判断是否有信息安全设备与移动设备处于连接状态;
第一注入模块11,用于若第三判断模块判定有信息安全设备与移动设备处于连接状态时在网页中注入与所述网页地址对应的脚本;还用于若所述第三判断模块判定没有信息安全设备与移动设备处于连接状态时与所述信息安全设备建立连接,并在网页中注入与所述网页地址对应的脚本。
优选的,系统组件还包括:
第四判断模块,用于根据接收模块接收到的响应数据中的标志位判断信息安全设备是否成功根据操作指令完成相应操作;
获取操作结果模块17,用于若所述第四判断模块判定信息安全设备成功根据操作指令完成相应操作后从响应数据中获取操作结果,将操作结果作为本地函数的返回值。
优选的,应用程序还包括:
初始化模块,用于从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本,并将过滤网址和脚本对应地保存到应用程序中。
初始化模块具体包括:
第二判断子模块,用于获取初始化标志位,并根据初始化标志位判断是否已进行初始化;
存储子模块,用于若第二判断子模块判定没有初始化时从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本存储到应用程序中,并更新初始化标志位;
第一注入模块11,用于若所述第二判断子模块判定已进行初始化后在网页中注入与网页地址对应保存的脚本,并显示网页。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (22)
1.一种移动平台支持已有Web应用的方法,其特征在于,包括:
步骤S1、应用程序在网页中注入与网页地址对应保存的脚本,并显示网页;
步骤S2、所述应用程序接收到对所述脚本的触发信息后产生查找本地函数请求,并将所述查找本地函数请求发送给系统组件;
步骤S3、所述系统组件根据所述查找本地函数请求调用本地函数生成操作指令,将所述操作指令发送给信息安全设备;并接收所述信息安全设备返回的响应数据,将响应数据中的操作结果作为本地函数返回值;
步骤S4、所述应用程序在网页中注入并执行获取本地函数返回值脚本,获取所述本地函数返回值,根据所述本地函数返回值更新并显示网页。
2.如权利要求1所述的方法,其特征在于,所述查找本地函数请求具体包括本地函数名和函数参数。
3.如权利要求2所述的方法,其特征在于,所述系统组件根据所述查找本地函数请求调用本地函数具体为:系统组件从查找本地函数请求中获取本地函数名和函数参数,根据本地函数名和函数参数调用本地函数。
4.如权利要求1所述的方法,其特征在于,所述与网页地址对应保存的脚本包括接口函数和交互函数;
所述步骤S2具体包括:所述应用程序接收到对所述脚本中的所述接口函数的触发信息,所述接口函数调用所述交互函数产生查找本地函数请求,并将查找本地函数请求发送给系统组件。
5.如权利要求1所述的方法,其特征在于,所述应用程序中存储有过滤网址以及与所述过滤网址对应的脚本。
6.如权利要求5所述的方法,其特征在于,所述步骤S1之前还包括:所述应用程序判断所述过滤网址中是否包括网页地址,是则执行步骤S1,否则结束。
7.如权利要求1所述的方法,其特征在于,所述步骤S1之前还包括:应用程序判断网页地址是否合法,是则根据所述网页地址生成并加载网络请求,当网络请求加载完成之后执行步骤S1;否则结束。
8.如权利要求1所述的方法,其特征在于,所述步骤S1之前还包括:应用程序判断是否有信息安全设备与移动设备处于连接状态,是则执行步骤S1,否则与信息安全设备建立连接,执行步骤S1。
9.如权利要求1所述的方法,其特征在于,所述接收所述信息安全设备返回的响应数据之后,将响应数据中的操作结果作为本地函数返回值之前还包括:系统组件根据响应数据中的标志位判断信息安全设备是否成功根据操作指令完成相应操作,是则从响应数据中获取操作结果,将操作结果作为本地函数的返回值,否则结束。
10.如权利要求1所述的方法,其特征在于,所述步骤S1之前还包括:应用程序进行初始化,即从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本,并将过滤网址和脚本对应地保存到应用程序中。
11.如权利要求10所述的方法,其特征在于,所述应用程序从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本之前还包括:应用程序获取初始化标志位,并根据初始化标志位判断是否已进行初始化,是则执行步骤S1;否则应用程序从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本存储到应用程序中,并更新初始化标志位,执行步骤S1。
12.一种移动平台支持已有Web应用的装置,其特征在于,包括:应用程序和系统组件;
所述应用程序包括:
第一注入模块,用于在网页中注入与网页地址对应保存的脚本,并显示网页;
查找本地函数请求生成模块,用于接收到对所述第一注入模块注入的脚本的触发信息产生查找本地函数请求;
第一发送模块,用于将所述查找本地函数请求生成模块生成的查找本地函数请求发送给所述系统组件;
第二注入模块,用于在网页中注入获取本地函数返回值脚本;
执行模块,用于执行所述第二注入模块注入的获取本地函数返回值脚本,获取本地函数返回值;
显示模块,用于根据执行模块获取到的本地函数返回值更新并显示网页;
所述系统组件包括:
调用模块,用于接收应用程序发送的查找本地函数请求,根据所述查找本地函数请求调用本地函数生成操作指令;
第二发送模块,用于将所述调用模块生成的操作指令发送给信息安全设备;
接收模块,用于接收信息安全设备返回的响应数据;
获取操作结果模块,用于将所述接收模块接收到的响应数据中的操作结果作为本地函数返回值。
13.如权利要求12所述的装置,其特征在于,所述查找本地函数请求生成模块生成的查找本地函数请求具体包括本地函数名和函数参数。
14.如权利要求13所述的装置,其特征在于,所述调用模块具体用于从查找本地函数请求中获取本地函数名和函数参数,根据本地函数名和函数参数调用本地函数生成操作指令。
15.如权利要求12所述的装置,其特征在于,所述第一注入模块注入的脚本中包括接口函数和交互函数;
所述查找本地函数请求生成模块,具体用于接收对第一注入模块注入的脚本中的接口函数的触发信息,接口函数调用交互函数产生查找本地函数请求。
16.如权利要求12所述的装置,其特征在于,所述应用程序还包括:
存储模块:用于存储有过滤网址以及与所述过滤网址对应的脚本。
17.如权利要求16所述的装置,其特征在于,应用程序还包括
第一判断模块,用于判断所述存储模块中存储的所述过滤网址中是否包括所述网页地址;
所述第一注入模块,用于若第一判断模块判定过滤网址中包括所述网页地址时在网页中注入与所述网页地址对应脚本。
18.如权利要求12所述的装置,其特征在于,所述应用程序还包括:
第二判断模块,用于判断网页地址是否合法;
加载模块,用于若第二判断模块判定网页地址合法时生成并加载网络请求;
所述第一注入模块,当所述加载模块加载网络请求完成后在网页中注入与所述网页地址对应脚本。
19.如权利要求12所述的装置,其特征在于,所述应用程序还包括:
第三判断模块,用于判断是否有信息安全设备与移动设备处于连接状态;
所述第一注入模块,用于若第三判断模块判定有信息安全设备与移动设备处于连接状态时在网页中注入与所述网页地址对应的脚本;还用于若所述第三判断模块判定没有信息安全设备与移动设备处于连接状态时与所述信息安全设备建立连接,并在网页中注入与所述网页地址对应的脚本。
20.如权利要求12所述的装置,其特征在于,所述系统组件还包括:
第四判断模块,用于根据接收模块接收到的响应数据中的标志位判断信息安全设备是否成功根据操作指令完成相应操作;
所述获取操作结果模块,用于若所述第四判断模块判定信息安全设备成功根据操作指令完成相应操作后从响应数据中获取操作结果,将操作结果作为本地函数的返回值。
21.如权利要求12所述的装置,其特征在于,所述应用程序还包括:
初始化模块,用于从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本,并将过滤网址和脚本对应地保存到应用程序中。
22.如权利要求21所述的装置,其特征在于,初始化模块具体包括:
第二判断子模块,用于获取初始化标志位,并根据初始化标志位判断是否已进行初始化;
存储子模块,用于若第二判断子模块判定没有初始化时从配置文件或者配置卡中获取过滤网址以及与过滤网址对应的脚本存储到应用程序中,并更新初始化标志位;
所述第一注入模块,用于若所述第二判断子模块判定已进行初始化后在网页中注入与网页地址对应保存的脚本,并显示网页。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610744425.2A CN106325948B (zh) | 2016-08-27 | 2016-08-27 | 一种移动平台支持已有Web应用的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610744425.2A CN106325948B (zh) | 2016-08-27 | 2016-08-27 | 一种移动平台支持已有Web应用的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106325948A CN106325948A (zh) | 2017-01-11 |
CN106325948B true CN106325948B (zh) | 2019-07-26 |
Family
ID=57791321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610744425.2A Active CN106325948B (zh) | 2016-08-27 | 2016-08-27 | 一种移动平台支持已有Web应用的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106325948B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188296B (zh) * | 2019-05-13 | 2021-07-13 | 北京百度网讯科技有限公司 | 应用程序内嵌页面处理方法、浏览器、设备和存储介质 |
CN110704125A (zh) * | 2019-09-19 | 2020-01-17 | 腾讯科技(深圳)有限公司 | 一种网页加载方法、装置及存储介质和终端设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298521A (zh) * | 2011-08-31 | 2011-12-28 | 因为科技无锡有限公司 | 基于跨平台浏览技术的移动互联网应用系统 |
CN102955694A (zh) * | 2011-08-31 | 2013-03-06 | 中国电信股份有限公司 | 基于WebKit 浏览器的客户端实现方法以及客户端 |
CN103106102A (zh) * | 2013-01-14 | 2013-05-15 | 百度在线网络技术(北京)有限公司 | 一种web应用程序的运行方法及移动终端 |
CN104461575A (zh) * | 2014-12-26 | 2015-03-25 | 北京华电万通科技有限公司 | 一种网页脚本语言跨移动操作系统平台原生接口调用的装置及方法 |
-
2016
- 2016-08-27 CN CN201610744425.2A patent/CN106325948B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298521A (zh) * | 2011-08-31 | 2011-12-28 | 因为科技无锡有限公司 | 基于跨平台浏览技术的移动互联网应用系统 |
CN102955694A (zh) * | 2011-08-31 | 2013-03-06 | 中国电信股份有限公司 | 基于WebKit 浏览器的客户端实现方法以及客户端 |
CN103106102A (zh) * | 2013-01-14 | 2013-05-15 | 百度在线网络技术(北京)有限公司 | 一种web应用程序的运行方法及移动终端 |
CN104461575A (zh) * | 2014-12-26 | 2015-03-25 | 北京华电万通科技有限公司 | 一种网页脚本语言跨移动操作系统平台原生接口调用的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106325948A (zh) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108319483B (zh) | 网页处理方法、装置、终端及存储介质 | |
CN105389222B (zh) | 一种动态调用原生接口的方法、装置和系统 | |
EP3968677B1 (en) | Profile download method and system, and related device | |
US9053201B2 (en) | Communication with a web compartment in a client application | |
JP6181214B2 (ja) | モバイル機器 | |
CN109815683B (zh) | 权限验证方法及相关装置 | |
US20230072428A1 (en) | Method, Apparatus, and System for Pushing Application Program, and Device | |
US20140351807A1 (en) | Method and communication device for updating web application | |
CN104584011B (zh) | 用于web内容和web服务的安全网络内插入的方法和系统 | |
CN108108219B (zh) | 应用程序运行方法、装置、计算机设备和存储介质 | |
CN106686038A (zh) | 云桌面的调用方法及装置 | |
CN106325948B (zh) | 一种移动平台支持已有Web应用的方法及装置 | |
CN106446299A (zh) | 网站信息下载方法及装置 | |
CN109510799B (zh) | 页面展示方法、浏览器客户端、设备及存储介质 | |
CN112642164A (zh) | 账号分享方法、装置、系统及计算机可读存储介质 | |
CN109857963A (zh) | 本地资源访问方法、装置及电子设备 | |
US11228586B2 (en) | Method for automating user authentication on a mobile application | |
CN112468611A (zh) | 应用程序启动方法、终端设备及计算机存储介质 | |
CN107979577A (zh) | 一种终端认证的方法及设备 | |
KR20110104885A (ko) | 장치의 서비스에 액세스하기 위한 방법 및 장치 | |
CN103780637B (zh) | 信息共享装置及方法 | |
CN101662770B (zh) | 访问无线应用协议网站的方法、移动终端、服务器及系统 | |
CN103123592A (zh) | 开放平台中应用程序的访问方法及系统 | |
CN113472752B (zh) | 一种权限处理方法、装置、电子设备及存储介质 | |
KR20110123513A (ko) | 페이지 연동 기능을 구비한 웹 어플리케이션 실행 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |