iOS調(diào)用H5方法
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到麻陽(yáng)網(wǎng)站設(shè)計(jì)與麻陽(yáng)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋麻陽(yáng)地區(qū)。
UIWebView:NSString *result = [webView stringByEvaluatingJavaScriptFromString:@"javascript:add(3,5);"];
WKWebView:[self.webView evaluateJavaScript:@"show()" completionHandler:^(id _Nullable response, NSError * _Nullable error) { //TODO }];
可以的,只要接口調(diào)用跟native一樣就可以了。
方法一、,速度完成與H5類似iOS 版本的APP,然后至少還需要招聘一名iOS開(kāi)發(fā)人員,以解決iOS版本的更新迭代。(工作量和成本都很高)
方法二、針對(duì)AppStore進(jìn)行包裝。將HTML5應(yīng)用用phonograph打包,取消HTML5中的彈簧效果等,讓其看起來(lái)更像是一個(gè)原生應(yīng)用。(適合剛開(kāi)始進(jìn)行HTML5開(kāi)發(fā)人員,用phonegrap開(kāi)發(fā)然后打包)
方法三、針對(duì)AppStore的規(guī)則,隱藏webview,在審核期間,展示APP的外殼,以供AppStore審核用。在審核通過(guò)后,可以通過(guò)后臺(tái),對(duì)其布局進(jìn)行配置。這個(gè)時(shí)候,用戶后打開(kāi)的就是你在后臺(tái)配置的布局了。。。
如果使用第三種,要注意幾個(gè)地方。
1、APP審核期間要保證你的后臺(tái)布局是為了給AppStore審核人員看的布局。
2、APP審核通過(guò)之后,其實(shí)也是有幾率會(huì)被發(fā)現(xiàn)及下架的,做好最壞的打算。
3、試用與應(yīng)急或者對(duì)APP體驗(yàn)要求不高的應(yīng)用,一般服務(wù)類APP。
這種方法是利用攔截webView響應(yīng)的url,對(duì)url進(jìn)行處理,同時(shí)把需要執(zhí)行的方法名和參數(shù)都放入url中,實(shí)現(xiàn)app和H5之前的方法交互:
這個(gè)屬性是WKWebView才有的屬性,主要是通過(guò)WKScriptMessageHandler的代理方法 - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message 進(jìn)行交互。
注意:
這兩個(gè)方法是成對(duì)出現(xiàn)的,每次調(diào)用了add就必須調(diào)用remove。
1.建立 WebViewJavaScriptBridge 和 WebView 之間的關(guān)系。
_jsBridge = [WebViewJavascriptBridge bridgeForWebView:_webView];
2.方法調(diào)用
1)oc調(diào)js方法(通過(guò)data可以傳值,通過(guò) response可以接受js那邊的返回值 )
2)js調(diào)oc方法(可以通過(guò)data給oc方法傳值,使用responseCallback將值再返回給js)
最后:iOS調(diào)用H5方法
UIWebView: NSString *result = [webView stringByEvaluatingJavaScriptFromString:@"javascript:add(3,5);"];
WKWebView: [self.webView evaluateJavaScript:@"show()" completionHandler:^(id _Nullable response, NSError * _Nullable error) { //TODO }];