IOS JS與客戶端互動
webViewDidFinishLoad中註冊的,但有些JS介面介面沒有載入完就開始呼叫客戶端方法了導致調不起來。最近專案碰到這種情況,改在shouldStartLoadWithRequest中註冊,還有的呼叫讓JS端延遲了一點呼叫。
2.有的JS通過物件的方式註冊的介面,我們客戶端也需要物件的方式呼叫,註冊物件
self.context=[webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
self
self.context[@"Obj"] = self;
3.在JS切換介面的時候context需要重新註冊不然會調不起介面,所以此處註冊的時候不能判斷為空時才註冊,不能只註冊一次。(自測在請求前以及載入完後的上線文context也是會變的,具體根據專案呼叫情況註冊)。
4. 只有遵守JSExport的協議的方法 才能被JS端呼叫。
@protocol LBJSBridgeClientDelegate <JSExport>
-(void)weixinShare;
@end