首先,附加上封裝庫的源碼地址 FMBridgeJSOC源碼
先簡單介紹一下這個庫吧:這個庫的所有方法都注冊到了html的window控件上,這裡有個原因不得不說一下,就是在web頁面調用中,如果我們參考網絡上的多數通過實現JSExport方法來注冊到window.app的方式來處理,那麼就會存在方法還未定義就被調用的情況。具體來講就是網頁中點擊鏈接切換時跳轉到某個網頁,在加載時取獲取參數,這是可能存在app的初始化都還未完成我們就開始調用了。而對於一個window窗口的生命周期這裡就不講了。
對於 FMBridgeJSOC 這個庫采用了pod支持的方式。我們只需在通過創建的用pod管理的工程中的Podfile中加入
pod 'FMBridgeJSOC'
然後執行
pod update
即可導入。
好吧,引入封裝庫了,接下來就介紹一下使用。
首先,定義一個controller類,在累中引入文件
UIWebView+JSBridge.h
好了接下來我們定義在累中定義一個方法吧
這裡,我就用定義一個下面的方法吧:
- (NSString *(^)(BOOL isLocal)) hello:(NSString *)hello welcome:(NSString *)welcome;
看出來了吧,支持block操作哦。好了,不吹了,
下面是方法的具體實現
- (NSString *(^)(BOOL isLocal)) hello:(NSString *)hello welcome:(NSString *)welcome {
return ^NSString *(BOOL isLocal){
return [NSString stringWithFormat:@"%@",isLocal ? welcome : hello];
};
}
現在我們要做什麼呢?
很簡單就是在viewdidLoad中定義一個webview。
我在這裡采用了屬性的方式定義了一個webview
- (UIWebView *)webView {
if (_webView == nil) {
_webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:_webView];
}
return _webView;
}
然後調用
[self.webView registerJSCallSelector:@selector(hello:welcome:) withTarget:self];
這樣,我們在基於這個webView展示的h5頁面中就可以隨意調用一個以hellowelcome()為名的方法了。
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]]]];
這個就是我們的具體調用。
至於具體的h5調用d實現裡面又個小示例,這裡多說,更多參考其他資料吧。
各位看客,如果覺得可以的話可以star或fork一下以示支持哦。