2017-12-04(週一)JS和OC互調

weixin_33670713發表於2017-12-04
2266736-739edfcee154ac60.jpeg
柴柴9.jpeg

好久沒寫週一筆記了,日常柴柴鎮樓。

  • 愉快的週末 在吃雞中度過,很氣人的是幾次第二 就是沒吃到雞,現在亞服的外掛太猖狂了,基本每局都能碰到神仙,也是屌的不行。所以 經過我們一致認為,暫時先回歸LOL ,等一手騰訊爸爸 後續的操作。 OJBK 言歸正傳,回到工作,上一週我積累了什麼東西呢。

  • javascriptCore 庫, 對比幾種OC和JS 互動 發現這個是最簡單 也是直接依賴於蘋果自己,而不需要引入第三方庫的,使用起來很舒服。

  • 以下是程式碼截圖:

1.獲取webViewContext 新增事件監聽.

 #pragma mark - private method
- (void)addCustomActions
{
    JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    
    [context evaluateScript:@"var arr = [3, 4, 'abc'];"];

    [self addScanWithContext:context];
    
    [self addLocationWithContext:context];
    
    [self addSetBGColorWithContext:context];
    
    [self addShareWithContext:context];
    
    [self addPayActionWithContext:context];
    
    [self addShakeActionWithContext:context];
    
    [self addGoBackWithContext:context];
} 

2.JS呼叫OC的程式碼

- (void)addScanWithContext:(JSContext *)context
{
    // JS呼叫OC
    context[@"scan"] = ^() {
//        NSLog(@"掃一掃啦");
        UIAlertView * alertV = [[UIAlertView alloc]initWithTitle:@"哈哈" message:@"JS呼叫OC程式碼" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil];
        [alertV show];
    };
}

3.OC呼叫JS的程式碼

 // 將分享結果返回給js
        NSString *jsStr = [NSString stringWithFormat:@"shareResult('%@','%@','%@')",title,content,url];
        [[JSContext currentContext] evaluateScript:jsStr];

重要說明 其實JS和OC的互調很簡單,只需要JS方和OC方協調統一好方法,就可以很簡單的實現互相呼叫。

這裡擷取一點HTML 中的JS程式碼。按鈕點選事件觸發對應2中的OC scan 方法。系統列印出 “掃一掃”

<input type="button" value="掃一掃" onclick="scanClick()" />
 function scanClick() {
                scan();
            }

總結 JS和OC之間的互調還是蠻簡單的,以前借用第三方的JavaScriptBridge 來實現這功能,現在蘋果自帶這庫 直接引用即可,更加方便省事了。

相關文章