一种启动应用的方法和系统与流程

文档序号:12967615阅读:122来源:国知局

本申请涉及计算机软件技术领域,尤其涉及一种启动应用的方法和系统。



背景技术:

移动端平台上可以提供基于该移动端操作系统开发的应用,以完成各种面向用户的功能的实现。例如,苹果的ios平台提供基于ios系统的移动端应用,谷歌的android平台提供基于android系统的移动端应用,windows移动端平台提供基于windows系统的移动端应用。

这种移动端平台上的应用,可以通过其他应用来启动。例如,短信应用收到的一条短信中包括一个url地址,用户点击该短信中的url地址后,移动端可以打开一个网页页面。打开的网页页面,可以是通过移动端的默认浏览器应用来打开。再例如,移动端上的本地应用a(例如购票应用)在需要支付时,可以通过本地应用a中集成的webview组件打开支付页面,进而通过该支付页面打开本地应用b(例如支付应用)。

具体的,例如移动端的短信应用中的某个短信可能包括一个支付宝的链接地址。用户点击该短信中的链接地址后,移动端通过默认的浏览器应用可以打开所述链接地址的页面。进而,该页面可以尝试通过schemeuri来唤起本地应用b(如支付宝钱包应用),从而使用户可以在支付宝钱包应用中进行操作。schemeuri是一种系统级的资源定位方式,支持android、ios和windows移动平台系统。上述例子中,唤起支付宝钱包应用之后,大多移动平台系统的浏览器应用打开的页面一般不会消失,而是会在一小段时间后跳转到应用下载引导页面。这样,即使支付宝钱包应用已经安装于移动终端上,浏览器跳转的页面仍然会提示用户下载支付宝钱包应用。

再例如,移动端的本地应用a中经由操作打开一个淘宝商品的链接地址, 如本地应用a可以通过其webview组件打开所述链接地址的页面。进而,该页面可以尝试通过schemeuri来唤起本地应用b(如淘宝应用),从而在使用户可以在淘宝应用中进行操作。类似的,上述例子中,唤起淘宝应用之后,大多移动平台系统的本地应用a中的webview组件打开的页面一般不会消失,而是会在一小段时间后跳转到应用下载引导页面。这样,即使淘宝应用已经安装于移动终端上,通过webview组件跳转的页面仍然会提示用户下载淘宝应用。

可见,上述现有技术,打开网页并唤起对应应用后,打开的网页无法获知所在移动终端上已安装相应应用。由此,无论所在移动终端是否已安装相应应用,均会引导至应用下载页面,增加了通信过程,且浪费资源,影响用户感受。



技术实现要素:

本申请实施例的目的是提供一种启动应用的方法和系统,以使打开的页面能够确认所在终端已安装相应应用。

为解决上述技术问题,本申请实施例是这样实现的:

一种启动应用的方法,包括:

第一本地应用打开html5网页页面,唤起第二本地应用,并启动websocket尝试连接本地socket;

第二本地应用启动本地socket;

第一本地应用如果通过websocket连接到所述本地socket,则停止跳转到下载第二本地应用的引导页面。

一种启动应用的系统,包括:

第一本地应用,用于打开html5网页页面,唤起第二本地应用,并启动websocket尝试连接本地socket;如果通过websocket连接到所述本地socket,则停止跳转到下载第二本地应用的引导页面;

第二本地应用,用于启动本地socket。

由以上本申请实施例提供的技术方案可见,第一本地应用打开html5网 页页面后,可以启动websocket尝试连接本地socket。第二本地应用被唤起后可以启动本地socket。这样,第一本地应用可以通过websocket连接所述本地socket。第一本地应用如果通过websocket连接到所述本地socket,则可以判断第二本地应用已被唤起,从而不再需要第一本地应用跳转到某个下载引导页面。进而,第一本地应用可以停止跳转到下载第二本地应用的引导页面。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请一种启动应用的方法实施例的流程图。

具体实施方式

本申请实施例提供一种启动应用的方法和系统。

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

前述现有技术中,打开网页的浏览器应用或通过webview组件打开网页的本地应用a(例如前述浏览器应用或购票应用),一般与唤起的本地应用b不是同一应用,也就不在同一进程。现有技术中缺乏唤起过程中的跨进程通信的方式,本地应用a也就不能获知本地应用b已被唤起,从而本地应用a仍然跳转至应用b的下载第二本地应用的引导页面。

本申请实施例提供一种启动应用的方法,图1示出了该实施 例的实现流程,如图1所示,包括:

s110:第一本地应用打开html5网页页面,唤起第二本地应用,并启动websocket尝试连接本地socket。

html5网页页面的链接地址被以点击等操作触发打开时,相应页面可以载入浏览器应用或本地应用的webview组件中。浏览器应用或本地应用的webview组件可以将所述html5网页页面的地址组装为uri。该uri也称为schemeuri(也作urischeme)或customschemeuri。uri是统一资源标识符(uniformresourceidentifier)的命名结构,可以定义资源。这个资源是一个宽泛的概念,可以是通常所说的web资源,也可以是本机的一个文件,也可以是网络上的视频,等等。以下形式都是uri:

http://write.blog.csdn.net/postedit/7313543

file:///c:/windows/clock.avi

git://github.com/user/project-name.git

ftp://user1:1234@地址

ed2k://|file|%5bmac%e7%89%88%e6%9e%81%e5%93%81%e9%a3%9e%e8%bd%a69%ef%bc%9a%e6%9c%80%e9%ab%98%e9%80%9a%e7%bc%89%5d.%5bmacgame%5dneed.for.speed.most.wanted.dmg|4096933888|2c55f0ad2cb7f6b296db94090b63e88e|h=ltcxuvnp24ufx25h2x7ugfaxfchjkwxa|/

整体上,urischeme具备例如如下形式:

scheme://host:[port]/path?querykey=queryvalue

其中:scheme为scheme名称,例如上述http、file、git、ed2k等都是scheme名称;host为主机地址;path为路径;querykey=queryvalue为查询键值,port为端口(非必须)。

例如,短信应用中有一条短信,其内容包括以下形式的链接地址:

http://www.alipay.com/custom.html?schemeurl=zmverify%3a%2f%2fschemeapi%2fstartapp%3fbundleid%3d2000118%26version%3d1.5.1

其中,zmverify://schemeapi/startapp?bundleid=2000118&version=1.5.1是链接中的一个数据,也是一个被urlencode后的uri(urldecode为:zmverify://schemeapi/startapp?bundleid=2000118&version=1.5.1)。其中,zmverify表示芝麻认证app。如果是支付宝钱包app,则例如是:alipay://schemeapi/startapp?bundleid=2000118&version=1.5.1。系统通过zmverify这个scheme能够定位到声明这个的app,并唤起。schemeapi,startapp,bundleid,version等为可选参数项。其中schemeapi等价于域名的域,例如qq.com,alipay.com。而startapp,bundleid,version或更多的其他类似参数项第二应用可以根据业务需求处理这些参数,例如可以是打开某个网页,播放一段音乐,发送一条通知等。

短信应用中上述链接地址被触发打开后,可以开启默认的浏览器应用,以打开链接地址。在打开过程中,终端的浏览器应用可以解析得到该链接地址中的uri,并按照uri中的标识出的应用来访问相应的链接资源。具体的,终端浏览器通过解析网页数据中的js代码可以组装得到uri。

例如,uri标识出的应用为支付宝app,则可以通过系统api唤起相应的支付宝app,并在支付宝app中访问上述链接地址的所描述的资源。类似的,uri标识出的应用为淘宝app,则可以通过系统api唤起相应的淘宝app,并在淘宝app中打开上述链接地址所描述的资源。

上述例子中,默认的浏览器应用即为s110中的第一本地应用,唤起的支付宝app或淘宝app即为第二本地应用。

类似的,第一本地应用可以是集成webview组件的应用,例如某个购物应用。该购物应用中集成有webview,可以通过该集成的webview应用打开某个链接。由于集成有实现html5网页页面浏览功能的webview组件,该过程可以不必启动默认的浏览器应用。

上述第一本地应用与第二本地应用一般位于不同的进程,因而无法实现直接的通信。

此外,第一本地应用打开html5网页页面后,还可以启动websocket并尝试连接本地socket。websocket是html5的一种协议。html5定义了websocket协议,能更好的节省服务器资源和带宽并达到实时通讯。websocket可以实现浏览器与服务器之间的全双工通信(full-duplex)。通过websocket,浏览器和服务器只需要做一个握手的动作,之后浏览器和服务器之间就可以形成一条快速通道,两者之间就直接可以数据互相传送。

第一本地应用通过所述uri打开网页页面过程中,可以通过所述uri中指示的参数获得启动的本地socket的地址和端口。从而第一本地应用启动的websocket可以尝试连接本地socket。

s120:第二本地应用启动本地socket。

本申请实施例中,第二本地应用被唤起后,可以启动一个本地socket。具体的,第二本地应用通过所述uri打开网页页面过程中,可以通过所述uri中指示启动本地socket的参数来启动本地socket。所述参数例如包括前述的schemeapi,startapp,bundleid,version之类。这些参数可以用于标明第二本地应用唤起后打开的入口之类的内容。例如对于支付宝应用来说,在花呗入口打开。

启动的本地socket可以处于等待连接状态,并可以是一项服务。

socket又称"套接字",是操作系统提供的通信层的一组抽象api,用于描述ip地址和端口,是一个通信链的句柄。应用程序通过套接字向网络发出请求或者应答网络请求。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。socket可以实现同一主机的不同进程间的通信,且建立的通信可以是双向通信。

应用程序(即进程)通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应的进程发给传输层的数据都通过该端口输出。

此外,第二本地应用被唤起后,可以打开前述链接地址对应的html5网 页页面,从而在第二本地应用中提供用户进行浏览或操作。

s130:第一本地应用如果通过websocket连接到所述本地socket,则停止跳转到下载第二本地应用的引导页面。

s110中,第一本地应用打开html5网页页面后,可以启动websocket尝试连接本地socket。s120中第二本地应用启动本地socket。这样,s130中,第一本地应用可以通过websocket连接所述本地socket。

基于websocket的通讯原理,可以采用握手方式与所述本地socket进行通信。通过握手成功的确认,websocket即可以判断连接到本地socket。

第一本地应用如果通过websocket连接到所述本地socket,则可以判断第二本地应用已被唤起,从而不再需要第一本地应用跳转到某个下载第二本地应用的引导页面。进而,第一本地应用可以停止跳转到下载第二本地应用的引导页面。而且,由于启动的websocket连接本地socket是本地操作,不需要网络传输或等待网络相应,因此可以大大减少处理判断时间。

第二本地应用启动本地socket需要一定的时间,因此第一本地应用可以不必在启动websocket后即尝试连接所述本地socket,而是可以在第一预设时长之后进行。即s110中,第一本地应用可以打开html5网页页面第一预设时长之后启动websocket并尝试连接本地socket。如果第一本地应用在所述第一预设时长之后通过websocket连接到所述本地socket,则停止跳转到下载第二本地应用的引导页面。所述预设时长例如设置为800ms或1s。

此外,第一本地应用如果没有能通过websocket成功连接到所述本地socket,则可以跳转到下载第二本地应用的引导页面。具体的,第一本地应用如果没有能成功连接到所述本地socket,一般可以接收到一个错误提示。这样,第一本地应用如果通过websocket连接到所述本地socket时接收到错误提示,则可以跳转到下载第二本地应用的引导页面。跳转到的下载第二本地应用的引导页面可以在网页逻辑中加以设置,并且已在现有技术中实现,不再赘述。

第一本地应用启动的websocket与第二本地应用启动的本地socket可以 采用网页页面链接中指定的一个端口或指定的一组端口中的一个,这样的端口可以是网页页面链接中的一个参数。在组装为uri的过程中,同样可以体现。这样,第二本地应用启动的本地socket可以采用指定的端口。

此外,第一本地应用启动的websocket与第二本地应用启动的本地socket可以采用预先协商好的一个端口,也可以是预先协商好的一组端口中的一个。例如,s120中第二本地应用启动的本地socket所用的端口为一组端口中的一个,这一组端口包括8888,8889和8890。有时8888端口可能已被其他应用占用,这时,s120中第二本地应用启动的本地socket,可以发现8888这一端口已被占用,从而可以改为8889这一端口。这样,第一本地应用启动的websocket也是8888端口,则无法连接到本地socket。因此,第一本地应用启动的websocket在第二预设时长内,例如20ms内,如果没有成功连接到本地socket,可以更换预设端口组中的另一端口再次连接本地socket。当再次连接本地socket的连接成功,第一本地应用可以停止跳转到下载第二本地应用的引导页面。如果第一本地应用启动的websocket使用预设的端口组中的所有端口均在第二预设时长内没有接收成功连接到所述本地socket,可以跳转到下载第二本地应用的引导页面。

本申请还提供一种启动应用的系统实施例,包括:

一种启动应用的系统,包括:

第一本地应用,用于打开html5网页页面,唤起第二本地应用,并启动websocket尝试连接本地socket;如果通过websocket连接到所述本地socket,则停止跳转到下载第二本地应用的引导页面;

第二本地应用,用于启动本地socket。

优选地,所述网页页面的链接地址被触发打开时由第一本地应用打开对应的网页页面,所述第一本地应用包括浏览器应用或集成webview组件的本地应用。

优选地,所述网页页面的链接地址被触发打开时,第一本地应用将所述网页页面的地址组装为uri,并唤起打开所述uri对应的第二本地应用。

优选地,所述第一本地应用启动websocket尝试连接本地socket,包括:

第一本地应用在打开所述html5网页页面第一预设时长之后启动websocket并尝试连接本地socket。

优选地,第一本地应用如果没有能通过websocket成功连接到所述本地socket,则跳转到下载第二本地应用的引导页面。

优选地,第一本地应用如果通过websocket连接到所述本地socket时接收到错误提示,则跳转到下载第二本地应用的引导页面。

优选地,第二本地应用启动本地socket时如果采用的端口被占用,则更换为预设端口组中的另一端口;

相应地,第一本地应用启动的websocket在第二预设时长内如果没有成功连接到本地socket,则更换预设端口组中的另一端口再次连接本地socket。

优选地,第一本地应用启动的websocket使用预设的端口组中的所有端口均在第二预设时长内没有接收成功连接到所述本地socket,跳转到下载第二本地应用的引导页面。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来 设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实 体实现,或者由具有某种功能的产品来实现。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本 申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1