h5app软件开发设计构思
发布时间:2020-06-29
摘要: 现如今移动端web应用,很多那时候都务必与原生app软件进行交互、沟通沟通交流(运作在webview中),比如微信的jssdk,根据window.wx对象调用一些原生app软件的作用。因此,此次就来捋一捋

现如今移动端web应用,很多那时候都务必与原生app_293_1.html' target='_blank'>app软件进行交互、沟通沟通交流(运作在webview中),比如微信的jssdk,根据window.wx对象调用一些原生app软件的作用。因此,此次就来捋一捋h5与原生app软件交互的基本原理。

h5app软件开发设计构思

特别提示:本文仅供开发需求者模式参考,投资有风险,谨慎投资,本公司是系统软件开发公司,非平台方,玩家勿扰!!

h5与原生app软件的交互,本质上说,就是说二种调用:

app软件调用h5的代码

h5调用app软件的代码

1.app软件调用h5的代码

因为app软件是宿主,能够 马上访问h5,因此这种调用比较简易,就是说在h5中曝露一些全局对象(包括方法 ),随后在原生app软件中调用这种对象。

Javascript:

window.sdk={double=value=>value*2,triple=value=>value*3,};

android_434_1.html' target='_blank'>android

webview.evaluateJavascript('window.sdk.double(十)',newValueCallback(){@OverridepublicvoidonReceiveValue(Strings){//20}});

ios:

NSString*func=@"window.sdk.double(十)";NSString*str=[webviewstringByEvaluatingJavascriptFromString:func];//20

2.h5调用app软件的代码

因为h5不能以马上访问宿主app软件,因此这种调用就相对性繁杂一点儿。

这种调用常见有二种方法:

由app软件向h5注入壹个全局js对象,随后在h5马上访问这一对象

由h5发起壹个自定义协议请求,app软件拦截这一请求后,再由app软件调用h5中的回调函数

2.1由app软件向h5注入壹个全局js对象

这种方法沟通沟通交流机制简易,比较好了解,而且对于h5来讲,沒有新的物件,因只是比较强烈推荐的这种方法。但这种方法将会存有安全系数隐患,详尽查询你不了解的AndroidWebView应用漏洞。

android:

webview.addJavascriptInterface(newObject(){@JavascriptInterfacepublicintdouble(value){returnvalue*2;}@JavascriptInterfacepublicinttriple(value){returnvalue*3;}},"app软件Sdk");

ios:

@interfaceapp软件Sdk:NSObject{}-(int)double:(int)value;-(int)triple:(int)value;@end@implementationapp软件Sdk-(int)double:(int)value{returnvalue*2;}-(int)triple:(int)value{returnvalue*3;}@endJSContext*cOntext=[webviewvalueForKeyPath:@"documentView.webView.mainFrame.JavascriptContext"];app软件Sdk*app软件Sdk=[app软件Sdknew];context[@"app软件Sdk"]=app软件Sdk;

Javascript:

window.app软件Sdk.double(十);//20

2.2由h5发起壹个自定义协议请求

这种方法要稍繁杂一点儿,因为务必自定义协议,这对很多前端开发设计构思者来讲是比较新的物件。因此一般不强烈推荐这种方法,能够 做为第这种方法的补充。

大概务必下列好好地几个流程:

由app软件自定义协议,比如sdk://action?params

在h5定义好回调函数,比如window.bridge={getDouble:value=>{},getTriple:value=>{}}

由h5发起壹个自定义协议请求,比如location.href='sdk://double?value=十'

app软件拦截这一请求后,进行相对的具体操作,获得返回值

由app软件调用h5中的回调函数,比如window.bridge.getDouble(20);

Javascript:

window.bridge={getDouble:value=>{//20},getTriple:value=>{//more}};location.href='sdk://double?value=十';

android:

webview.setWebViewClient(newWebViewClient(){@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){//分辨倘若url是sdk://打头的就拦截掉//随后从urlsdk://action?params中取出action与paramsUriuri=Uri.parse(url);if(uri.getScheme().equals("sdk")){//比如action=double,params=value=十webview.evaluateJavascript('window.bridge.getDouble(20)');returntrue;}returnsuper.shouldOverrideUrlLoading(view,url);}});

ios:

-(BOOL)webview:(UIWebView*)webviewshouldStartLoadWithRequest:(NSURLRequest*)requestnavigationType:(UIWebViewNavigationType)navigationType{//分辨倘若url是sdk://打头的就拦截掉//随后从urlsdk://action?params中取出action与paramsNSString*urlStr=request.URL.absoluteString;if([urlStrhasPrefix:@"sdk://"]){//比如action=double,params=value=十NSString*func=@"window.bridge.getDouble(20)";[webviewstringByEvaluatingJavascriptFromString:func];returnNO;}returnYES;}

 

选择一间app软件订制软件开发设计构思公司,蕞重要的是程序员的素质和综合性工作中能力,大兵软件技术性专业从业软件开发设计构思,服务新项目生产制造行业范畴非常之广,汇聚了JAVA,NET,前端,app软件应用,PHP,软件检验等多层面的开发设计构思工程项目师,也是平面设计构思,货品设计构思与运营,互联网技术基本建设与运维等层面的技术性专业人才,有很多年的公司级软件开发设计构思的工作中经验。

大兵软件有限公司自始至终坚持不懈以创业服务新项目创业,以自主创新服务新项目自主创新”的宗旨,做软件开发设计构思,手机游戏开发设计构思和系统软件开发设计构思关键业务流程,维持前瞻性新项目投资,为出色创业人做一站式扶持,并建立“大服务新项目、大扶持、大将来”的整体目标。大兵软件坚持不懈以消費者要求为中心,打造出公司知名品牌助力公司成长!那麼蕞后说一句,倘若您有软件开发设计构思的要求,请立刻关注联络人们吧。

标签:android,手机游戏,app,app软件,app软件开发,app软件应用,app软件订制,app软件是,app软件的,游戏开发,软件开发,软件开发公司,做软件开发,软件开发设计,系统软件开发,手机游戏开发,手机游戏开
推荐项目更多