CN105718512A - 一种在Ios***中利用JS语言调用原生语言的方法 - Google Patents

一种在Ios***中利用JS语言调用原生语言的方法 Download PDF

Info

Publication number
CN105718512A
CN105718512A CN201610020785.8A CN201610020785A CN105718512A CN 105718512 A CN105718512 A CN 105718512A CN 201610020785 A CN201610020785 A CN 201610020785A CN 105718512 A CN105718512 A CN 105718512A
Authority
CN
China
Prior art keywords
language
primary
call
ios system
webpage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610020785.8A
Other languages
English (en)
Inventor
黄少华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Cheerbright Technologies Co Ltd
Original Assignee
Beijing Cheerbright Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Cheerbright Technologies Co Ltd filed Critical Beijing Cheerbright Technologies Co Ltd
Priority to CN201610020785.8A priority Critical patent/CN105718512A/zh
Publication of CN105718512A publication Critical patent/CN105718512A/zh
Pending legal-status Critical Current

Links

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/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

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

Abstract

本发明公开了一种在Ios***中利用JS语言调用原生语言的方法,涉及计算机技术领域。该方法通过自定义URL(URL Scheme)链接,实现了在网页中调用原生代码编写的功能,由于URL链接的格式是标准的,在使用过程中,只需要对其中的参数先进行自定义,再进行解析,就可以实现调用,所以,代码简单,调用的实现过程方便、简单,且容易扩展。

Description

一种在Ios***中利用JS语言调用原生语言的方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种在Ios***中利用JS语言调用原生语言的方法。
背景技术
在Ios***使用UIWebView(网页视图)过程中,有些内容需要调用原生代码来提升用户体验,如登录、支付、分享等,可是JavaScript(简称JS)调用原生语言,并没有现成的API,均需要重新开发。
目前,JS调用原生语言主要通过以下两种方法来实现:一种方法是完全自定义协议,这种自定义的协议与一般的url格式不一致,所以,在使用过程中,需要组装或截取、解析这种非标准url协议的字段和参数,从而增加了代码的复杂程度,使得代码不利于阅读及理解,也容易出现错误;第二种方法是使用WebViewJavascriptBridge开源库实现JS对原生语言的调用,这种方法虽然实现了在使用UIWebView时JS与ios的原生代码之间的互调,但是要加入第三方开源库,注册调用方法,所以使用起来比较复杂。
发明内容
本发明的目的在于提供一种在Ios***中利用JS语言调用原生语言的方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种在Ios***中利用JS语言调用原生语言的方法,包括如下步骤:
S1,在网页中嵌入自定义的URL链接,获得含有所述URL链接的网页;
S2,在网页视图中展现含有所述URL链接的网页;
S3,接收用户对网页上的所述URL链接的点击请求;
S4,解析所述URL链接,获取所述URL链接的参数;
S5,根据S4中获得的参数,调用含有相同所述参数的原生语言。
优选地,S1中,所述自定义的URL链接包括登录功能的链接、支付功能的链接和/或分享功能的链接。
优选地,S1中,登录功能的所述自定义的URL链接,为:
<ahref="autohome://cmdLogin?callback=clickme_login">,
其中,
urlscheme为autohome://,
urlhost为cmdLogin,
传递的参数为:callback=clickme_login。
优选地,S2采用如下方法实施:将S1中获得的含有所述URL链接的网页加载入UIWebView容器中。
优选地,S4采用UIWebViewDelegate方法,解析所述URL链接,获取所述URL链接的参数。
进一步地,S5之后还包括步骤:调用网页JS方法,告知网页,调用原生代码写的功能已完成,逻辑再回到网页中。
优选地,原生代码功能完成后,原生语言调用UIWebView的stringByEvaluatingJavaScriptFromString函数,调用网页JS语言的方法。
进一步地,S5之后还包括步骤:在Ios***中的原生语言中调用网页的JS语言,实现利用原生语言调用JS语言的功能。
优选地,所述实现利用原生语言调用JS语言的功能,具体为,采用UIWebView的-(NSString*)stringByEvaluatingJavaScriptFromString:(NSString*)script方法,实现在Ios***中的原生语言中调用JS语言。
优选地,所述实现利用原生语言调用JS语言的功能,包括:在原生代码中实现JS代码的增加、删除和/或修改。
本发明的有益效果是:本发明实施例提供的在Ios***中利用JS语言调用原生语言的方法,通过自定义URL(URLScheme)链接,实现了在网页中调用原生代码编写的功能,由于URL链接的格式是标准的,在使用过程中,只需要对其中的参数先进行自定义,再进行解析,就可以实现调用,所以,代码简单,调用的实现过程方便、简单,且容易扩展。
附图说明
图1是本发明实施例提供的在Ios***中利用JS语言调用原生语言的方法流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例提供了一种在Ios***中利用JS语言调用原生语言的方法,包括如下步骤:
S1,在网页中嵌入自定义的URL链接,获得含有所述URL链接的网页;
S2,在网页视图中展现含有所述URL链接的网页;
S3,接收用户对网页上的所述URL链接的点击请求;
S4,解析所述URL链接,获取所述URL链接的参数;
S5,根据S4中获得的参数,调用含有相同所述参数的原生语言。
本发明的一个优选实施例中,S1中,所述自定义的URL链接可以包括登录功能的链接、支付功能的链接和/或分享功能的链接。
其中,S1中,登录功能的所述自定义的URL链接,可以为:
<ahref="autohome://cmdLogin?callback=clickme_login">,
其中,
urlscheme为autohome://,
urlhost为cmdLogin,
传递的参数为:callback=clickme_login。
本发明实施例中,S2可以采用如下方法实施:将S1中获得的含有所述URL链接的网页加载入UIWebView容器中。
本发明实施例中,S4可以采用UIWebViewDelegate方法,解析所述URL链接,获取所述URL链接的参数。
在本发明的一个优选实施例中,S5之后还可以包括步骤:调用网页JS方法,告知网页,调用原生代码写的功能已完成,逻辑再回到网页中。
在本发明的一个优选实施例中,原生代码功能完成后,原生语言调用UIWebView的stringByEvaluatingJavaScriptFromString函数,调用网页JS语言的方法。
在本发明的一个优选实施例中,S5之后还可以包括步骤:在Ios***中的原生语言中调用网页的JS语言,实现利用原生语言调用JS语言的功能。
其中,所述实现利用原生语言调用JS语言的功能,具体可以为,采用UIWebView的-(NSString*)stringByEvaluatingJavaScriptFromString:(NSString*)script方法,实现在Ios***中的原生语言中调用JS语言。
在本发明的一个优选实施例中,所述实现利用原生语言调用JS语言的功能,可以包括:在原生代码中实现JS代码的增加、删除和/或修改。
其中,S1中,所述自定义的URL链接包括登录功能的链接、支付功能的链接和/或分享功能的链接。
S1中,登录功能的所述自定义的URL链接,可以为:
<ahref="autohome://cmdLogin?callback=clickme_login">,
其中,
urlscheme为autohome://,
urlhost为cmdLogin,
传递的参数为:callback=clickme_login。
要在网页中调用原生语言,实现原生的登录功能、支付功能或共享功能,需要在网页中嵌入用于调用原生功能的自定义的URL链接。
URL的一般格式为:scheme://host:port/path?query#fragment,
自定义的URL链接按照URL的一般格式进行自定义,其中,urlscheme可以自定义命名,urlhost可以自定义功能名,由于自定义的参数与原生语言的参数相同,从而当用户点击该自定义的URL链接时,则可以根据这些参数调用原生语言,实现原生功能。
在实际操作过程中,可以使用windows.location.href="自定义的url"或者href="自定义的url"实现在网页中嵌入自定义的URL链接。在开发网页的过程中,可以新建一个项目,在项目中新建一个helloworld.html。下面以写一个调用原生登录功能的链接为例,说明如何自定义具有原生语言调用功能的URL链接:
<ahref="autohome://cmdLogin?callback=clickme_login">,
其中,urlscheme:autohome://,
urlhost:cmdLogin,
传递的参数:callback=clickme_login,
callback参数是回调方法,登录成功后,调用网页的js方法clickme_login(),逻辑再回到网页中。
通过后续对自定义URL链接中的urlscheme、urlhost、callback等参数进行解析后,就可以根据参数实现JS调用原生登录功能</a>。
其他的原生代码的功能,同样可以通过自定义URL链接实现,比如原生支付功能和原生共享功能等。
本发明实施例中,S2可以采用如下方法实施:将S1中获得的含有所述URL链接的网页加载入UIWebView容器中。
通过采用上述方法,实现webview视图控制器,显示含有所述URL链接的本地网页helloworld.html,从而使用户登录本地网页后,能够可见自定义的URL链接,并通过点击该链接,实现原生登录功能。
本实施例中,S4可以采用UIWebViewDelegate方法,解析所述URL链接,获取所述URL链接的参数。
用户点击网页上的自定义URL链接后,WebViewDelegate方法得到通知,则该方法接受委托,对自定义URL链接中的参数进行解析,获取urlscheme:urlhost和传递的参数等数据。
比如,如果自定义具有原生语言调用功能的URL链接为:
<ahref="autohome://cmdLogin?callback=clickme_login">,
则,经过解析后,得到的该链接的参数为:
urlscheme:autohome://,
urlhost:cmdLogin,
传递的参数:callback=clickme_login。
然后,根据这些参数,即可实现原生代码的调用,完成原生登录功能,使用户能够按照原生代码实现的登录功能进行登录,从而为用户带来较好的体验。
本实施例中,S5之后还可以包括步骤:调用网页JS方法,告知网页,调用原生代码写的功能已完成,逻辑再回到网页中。
在本发明实施例提供的方法中实现原生功能,登录成功后,调用网页JS方法,告知网页,原生登录功能已完成,然后逻辑再回到网页中,从而使网页执行用户其他的请求操作。
本发明实施例中,可以采用UIWebView的stringByEvaluatingJavaScriptFromString函数,调用网页JS方法。
本发明实施例中,S5之后还可以包括步骤:在网页的原生语言中调用JS语言。
采用上述方法,可以实现原生语言和JS语言的相互调用,从而进一步提高用户体验。
具体的,可以采用UIWebView的-(NSString*)stringByEvaluatingJavaScriptFromString:(NSString*)script方法,实现在网页的原生语言中调用JS语言。
本发明的一个优选实施例中,所述在网页的原生语言中调用JS语言,包括:在原生代码中实现JS代码的增加、删除和/或修改。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明的有益效果是:本发明实施例提供的在Ios***中利用JS语言调用原生语言的方法,通过自定义URL(URLScheme)链接,实现了在网页中调用原生代码编写的功能,由于URL链接的格式是标准的,在使用过程中,只需要对其中的参数先进行自定义,再进行解析,就可以实现调用,所以,代码简单,调用的实现过程方便、简单,且容易扩展。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。
上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

Claims (10)

1.一种在Ios***中利用JS语言调用原生语言的方法,其特征在于,包括如下步骤:
S1,在网页中嵌入自定义的URL链接,获得含有所述URL链接的网页;
S2,在网页视图中展现含有所述URL链接的网页;
S3,接收用户对网页上的所述URL链接的点击请求;
S4,解析所述URL链接,获取所述URL链接的参数;
S5,根据S4中获得的参数,调用含有相同所述参数的原生语言。
2.根据权利要求1所述的在Ios***中利用JS语言调用原生语言的方法,其特征在于,S1中,所述自定义的URL链接包括登录功能的链接、支付功能的链接和/或分享功能的链接。
3.根据权利要求2所述的在Ios***中利用JS语言调用原生语言的方法,其特征在于,S1中,登录功能的所述自定义的URL链接,为:
<ahref="autohome://cmdLogin?callback=clickme_login">,
其中,
urlscheme为autohome://,
urlhost为cmdLogin,
传递的参数为:callback=clickme_login。
4.根据权利要求1所述的在Ios***中利用JS语言调用原生语言的方法,其特征在于,S2采用如下方法实施:将S1中获得的含有所述URL链接的网页加载入UIWebView容器中。
5.根据权利要求1所述的在Ios***中利用JS语言调用原生语言的方法,其特征在于,S4采用UIWebViewDelegate方法,解析所述URL链接,获取所述URL链接的参数。
6.根据权利要求1所述的在Ios***中利用JS语言调用原生语言的方法,其特征在于,S5之后还包括步骤:调用网页JS方法,告知网页,调用原生代码写的功能已完成,逻辑再回到网页中。
7.根据权利要求6所述的在Ios***中利用JS语言调用原生语言的方法,其特征在于,原生代码功能完成后,原生语言调用UIWebView的stringByEvaluatingJavaScriptFromString函数,调用网页JS语言的方法。
8.根据权利要求1所述的在Ios***中JS语言调用原生语言的方法,其特征在于,S5之后还包括步骤:在Ios***中的原生语言中调用网页的JS语言,实现利用原生语言调用JS语言的功能。
9.根据权利要求8所述的在Ios***中JS语言调用原生语言的方法,其特征在于,所述实现利用原生语言调用JS语言的功能,具体为,采用UIWebView的-(NSString*)stringByEvaluatingJavaScriptFromString:(NSString*)script方法,实现在Ios***中的原生语言中调用JS语言。
10.根据权利要求8所述的在Ios***中JS语言调用原生语言的方法,其特征在于,所述实现利用原生语言调用JS语言的功能,包括:在原生代码中实现JS代码的增加、删除和/或修改。
CN201610020785.8A 2016-01-13 2016-01-13 一种在Ios***中利用JS语言调用原生语言的方法 Pending CN105718512A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610020785.8A CN105718512A (zh) 2016-01-13 2016-01-13 一种在Ios***中利用JS语言调用原生语言的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610020785.8A CN105718512A (zh) 2016-01-13 2016-01-13 一种在Ios***中利用JS语言调用原生语言的方法

Publications (1)

Publication Number Publication Date
CN105718512A true CN105718512A (zh) 2016-06-29

Family

ID=56147836

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610020785.8A Pending CN105718512A (zh) 2016-01-13 2016-01-13 一种在Ios***中利用JS语言调用原生语言的方法

Country Status (1)

Country Link
CN (1) CN105718512A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445531A (zh) * 2016-09-28 2017-02-22 四川长虹电器股份有限公司 基于移动终端的跨平台的文档阅读器及其实现方法
CN107341042A (zh) * 2017-06-29 2017-11-10 武汉楚鼎信息技术有限公司 一种基于网页弹出窗口的客户端内嵌页交互方法及***
CN107562548A (zh) * 2017-08-04 2018-01-09 北京趣拿软件科技有限公司 传输数据的方法和装置
CN108334379A (zh) * 2018-01-05 2018-07-27 北京明略软件***有限公司 一种页面扩展功能的实现方法及实现装置
CN110955430A (zh) * 2018-09-26 2020-04-03 北京字节跳动网络技术有限公司 应用程序原生能力的调用方法、装置及电子设备
CN111459685A (zh) * 2019-01-18 2020-07-28 阿里巴巴集团控股有限公司 页面端与原生端的通信方法、装置、设备及可读介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104102537A (zh) * 2013-04-07 2014-10-15 华为技术有限公司 一种应用调用方法及用户终端
CN104301443A (zh) * 2014-10-09 2015-01-21 百度在线网络技术(北京)有限公司 一种在web页面上调用端能力接口的方法和***
CN104461575A (zh) * 2014-12-26 2015-03-25 北京华电万通科技有限公司 一种网页脚本语言跨移动操作***平台原生接口调用的装置及方法
CN105138340A (zh) * 2015-09-15 2015-12-09 北京齐尔布莱特科技有限公司 一种Native与Web页面的交互方法和***
CN105204875A (zh) * 2014-06-11 2015-12-30 腾讯科技(深圳)有限公司 网页调用native功能的方法和***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104102537A (zh) * 2013-04-07 2014-10-15 华为技术有限公司 一种应用调用方法及用户终端
CN105204875A (zh) * 2014-06-11 2015-12-30 腾讯科技(深圳)有限公司 网页调用native功能的方法和***
CN104301443A (zh) * 2014-10-09 2015-01-21 百度在线网络技术(北京)有限公司 一种在web页面上调用端能力接口的方法和***
CN104461575A (zh) * 2014-12-26 2015-03-25 北京华电万通科技有限公司 一种网页脚本语言跨移动操作***平台原生接口调用的装置及方法
CN105138340A (zh) * 2015-09-15 2015-12-09 北京齐尔布莱特科技有限公司 一种Native与Web页面的交互方法和***

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445531A (zh) * 2016-09-28 2017-02-22 四川长虹电器股份有限公司 基于移动终端的跨平台的文档阅读器及其实现方法
CN107341042A (zh) * 2017-06-29 2017-11-10 武汉楚鼎信息技术有限公司 一种基于网页弹出窗口的客户端内嵌页交互方法及***
CN107562548A (zh) * 2017-08-04 2018-01-09 北京趣拿软件科技有限公司 传输数据的方法和装置
CN108334379A (zh) * 2018-01-05 2018-07-27 北京明略软件***有限公司 一种页面扩展功能的实现方法及实现装置
CN110955430A (zh) * 2018-09-26 2020-04-03 北京字节跳动网络技术有限公司 应用程序原生能力的调用方法、装置及电子设备
CN111459685A (zh) * 2019-01-18 2020-07-28 阿里巴巴集团控股有限公司 页面端与原生端的通信方法、装置、设备及可读介质

Similar Documents

Publication Publication Date Title
CN105718512A (zh) 一种在Ios***中利用JS语言调用原生语言的方法
CN104395884B (zh) 用于网页应用程序和浏览器扩展的数据存储层级
CN111104635B (zh) 一种表格网页的生成方法和装置
CN107862352B (zh) 一种二维码分享方法及二维码分享设备
CN103731483A (zh) 一种基于云计算的虚拟文件***
CN104301443A (zh) 一种在web页面上调用端能力接口的方法和***
CN105138340A (zh) 一种Native与Web页面的交互方法和***
CN105243407B (zh) 读写智能卡的方法及装置
TW201723897A (zh) 資訊顯示方法、裝置及智能終端
CN104731869B (zh) 页面的展现方法及装置
CN103428309A (zh) 二维码跳转处理方法
CN107770563A (zh) 一种弹幕消息处理方法及装置
CN108829398B (zh) 一种移动端页面交互实现方法及装置
CN105051685A (zh) 用于使得网络资产能够访问本地应用的***和方法
CN103530160A (zh) 一种页面加载的方法和装置
CN107562548A (zh) 传输数据的方法和装置
CN105700936A (zh) 一种安卓模拟器应用程序运行方法和装置
CN105095220B (zh) 一种浏览器实现方法、终端和虚拟化代理装置
CN106844364A (zh) 一种文档信息的互联方法
CN110795635B (zh) 一种呈现书籍的方法与设备
CN110866202A (zh) 一种前端分页的方法及装置、可读存储介质
CN110020343B (zh) 网页编码格式的确定方法和装置
CN111767498A (zh) 一种实现文件信息共享的方法和装置
CN107368557B (zh) 页面编辑方法及装置
CN108984221B (zh) 一种多平台用户行为日志的采集方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160629

RJ01 Rejection of invention patent application after publication