ios開發app與js互動第三方工具WebViewJavascriptBridge的使用以及問題pod出現的問題處理
阿新 • • 發佈:2019-02-16
WebViewJavascriptBridge是一個ios與安卓通用的與js互動工具。使用起來非常方便,現在WebViewJavascriptBridge支援webview與WKWebView
首先要在.h或者.m裡面宣告
#import "WKWebViewJavascriptBridge.h"//使用wkweview的宣告這個類 //#import "WebViewJavascriptBridge.h"//使用webview的宣告這個類 #import <WebKit/WebKit.h> @property WKWebViewJavascriptBridge* bridge;//型別根據前面宣告的類來決定
然後在.m中來關聯處理
//開啟日誌
[WKWebViewJavascriptBridge enableLogging];
//關聯webview
self.bridge = [WKWebViewJavascriptBridge bridgeForWebView:webView];
//設定代理,如果用不到可以不用宣告
[self.bridge setWebViewDelegate:self];
下面就是js與oc互調的方法
//js呼叫oc [self.bridge registerHandler:@"getMerchantNo" handler:^(id data, WVJBResponseCallback responseCallback) { DLog(@"js返回的資料 %@", data); if (responseCallback) { // 反饋給JS responseCallback(@{@"userId": @"123456"}); } }]; // oc呼叫js [self.bridge callHandler:@"assureOpenResult" data:nil responseCallback:^(id responseData) { NSLog(@"oc收到js返回的資料: %@", responseData); }];
到這裡js與oc互調的方法就結束了。
下面來說一下在除錯過程中遇到的一個比較坑的問題
在pod工具之後,遠行時程式碼正常,但是在呼叫的時候報錯 ,報錯資訊如下
Undefined symbols for architecture arm64: "_OBJC_CLASS_$_WKWebViewJavascriptBridge", referenced from: objc-class-ref in HKAddServiceVC.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
然後在網上找了一大推的方法,其中有人時這樣解決的,但是對我專案沒用
解決:
Phew, finally got it working by editing the bridge header.
In file WKWebViewJavascriptBridge.h, find these lines:
#if (__MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_9 || __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1)
#define supportsWKWebKit
#endif
Then remove the #if #endif pair, just leave the #define supportsWKWebKit bit out. But make sure you are using iphone 7.1 or above or it won't support WKWebkit.
然後發現找到的原因時在pod專案之後.a檔案居然沒用引用到app中
然後新增進去,問題就解決了