Objective-跟JavaScript互相調(diào)用那點(diǎn)事

動(dòng)態(tài)的通過webView加載html文件膀篮,這樣就可以實(shí)時(shí)更新Html的內(nèi)容,給用戶更好的體驗(yàn)效果谨湘。iOS早期的中绽快,主要是通過UIWebView來實(shí)現(xiàn)這個(gè)功能,好紧阔,告訴你坊罢,iOS8以后,有了一個(gè)WKWebView擅耽,用它活孩,用它,用它乖仇。性能憾儒、內(nèi)存絕對(duì)是一個(gè)很大的優(yōu)化的體驗(yàn)询兴。本文,從兩個(gè)角度講述起趾,WKWebView的使用诗舰。##使用原聲代碼實(shí)現(xiàn)WKWebView使用稍等、待續(xù)##使用絕壁的第三方來實(shí)現(xiàn)WKWebView使用WebViewJavascriptBridge的作者也做了一套支持WKWebView與JS交互的第三方框架:训裆。(WKWebViewJavascriptBridge)>cocoaPods: pod ‘WebViewJavascriptBridge’, ‘~> 5.0.5’>github地址:https://github.com/marcuswestin/WebViewJavascriptBridge安裝上眶根,我們開始玩耍!注意:先將我們提前寫好的HTML放到服務(wù)上边琉,為了模擬的更逼真點(diǎn)属百,這里采用XAMPP開了服務(wù),放進(jìn)去HTML代碼

Paste_Image.png
使用:###注意事項(xiàng) 1变姨、http要適配修改info文件NSAppTransportSecurityNSAllowsArbitraryLoads2族扰、要引入#import// 使用WKwebview要導(dǎo)入此文件3、WKWebViewJavascriptBridge包含了UIWebView跟WKWebView定欧。因此要注意導(dǎo)入的頭文件JS調(diào)用Objective1渔呵、data js傳遞給原生的參數(shù)2、responseCallback 原生回調(diào)js的方法 [_bridge registerHandler:@"Login" handler:^(id data, WVJBResponseCallback responseCallback) { NSLog(@"JS called Objective,objectie get js param: %@", data); // 寫登錄邏輯判斷 NSDictionary * returnData = @{@"data":@"登錄成功"}; responseCallback(returnData); }];###完整的Objective代碼```#import "ViewController.h"#import// 使用WKwebview要導(dǎo)入此文件#import@interface ViewController ()@property (weak, nonatomic) IBOutlet UILabel *lblLog;

@property (weak, nonatomic) IBOutlet UIButton *buttonCallBack;

@property WKWebViewJavascriptBridge* bridge;

@end

@implementation ViewController

  • (IBAction)ocCallJS:(id)sender {

id data = @{@"data": @"oc調(diào)js啦"};

[self.bridge callHandler:@"callJS" data:data responseCallback:^(id response) {

NSLog(@"js返回了: %@", response);

}];

}

  • (void)viewDidLoad {

[super viewDidLoad];

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame];

webView.backgroundColor = [UIColor clearColor];

webView.userInteractionEnabled = YES;

webView.navigationDelegate = self;

[WKWebViewJavascriptBridge enableLogging];// 開啟日志

_bridge = [WKWebViewJavascriptBridge bridgeForWebView:webView];

[_bridge setWebViewDelegate:self];

[_bridge registerHandler:@"getJson" handler:^(id data, WVJBResponseCallback responseCallback) {

NSLog(@"JS called Objective,objectie get js param: %@", data);

NSDictionary * returnData = @{@"data":@"objective return js param is hello world"};

responseCallback(returnData);

}];

[_bridge registerHandler:@"Login" handler:^(id data, WVJBResponseCallback responseCallback) {

NSLog(@"JS called Objective,objectie get js param: %@", data);

// 寫登錄邏輯判斷

NSDictionary * returnData = @{@"data":@"登錄成功"};

responseCallback(returnData);

}];

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://192.168.1.221/web/IOSTest/test.html"]]];// 注意html文件的路徑

[self.view addSubview:webView];

[self.view bringSubviewToFront:self.lblLog];

[self.view bringSubviewToFront:self.buttonCallBack];

}

@end


Objective調(diào)用JS

1砍鸠、參數(shù)1.調(diào)用js給我準(zhǔn)備好的方法

2厘肮、參數(shù)2,原生傳遞給js的參數(shù)

3睦番、參數(shù)3、js回調(diào)給原生的方法

id data = @{@"data": @"oc調(diào)js啦"};

[self.bridge callHandler:@"callJS" data:data responseCallback:^(id response) {

NSLog(@"js返回了: %@", response);

}];


##HTML代碼

算了耍属,html代碼比較多托嚣,還是上傳到git上面去。

##代碼在這里厚骗!這里示启!這里!

[代碼](https://git.oschina.net/freedom_coco/ObjectiveCallJs.git)

https://git.oschina.net/freedom_coco/ObjectiveCallJs.git

##注意事項(xiàng)

1领舰、如果Xcode控制臺(tái)有打印夫嗓,而頁面沒有反應(yīng),那么就是頁面這邊報(bào)錯(cuò)了冲秽。通過瀏覽器訪問下舍咖,就可以定位到問題

2、如果點(diǎn)擊都xcode日志也沒有打印锉桑,頁面也沒有變化排霉,那么一般都是bridge沒有成功,失敗了民轴。原生出問題了攻柠。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末球订,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瑰钮,更是在濱河造成了極大的恐慌冒滩,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浪谴,死亡現(xiàn)場(chǎng)離奇詭異开睡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)较店,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門士八,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梁呈,你說我怎么就攤上這事婚度。” “怎么了官卡?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵蝗茁,是天一觀的道長。 經(jīng)常有香客問我寻咒,道長哮翘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任毛秘,我火速辦了婚禮饭寺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叫挟。我一直安慰自己艰匙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布抹恳。 她就那樣靜靜地躺著员凝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奋献。 梳的紋絲不亂的頭發(fā)上健霹,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音瓶蚂,去河邊找鬼糖埋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扬跋,可吹牛的內(nèi)容都是我干的阶捆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼洒试!你這毒婦竟也來了倍奢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤垒棋,失蹤者是張志新(化名)和其女友劉穎卒煞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叼架,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畔裕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乖订。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扮饶。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乍构,靈堂內(nèi)的尸體忽然破棺而出甜无,到底是詐尸還是另有隱情,我是刑警寧澤哥遮,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布岂丘,位于F島的核電站,受9級(jí)特大地震影響眠饮,放射性物質(zhì)發(fā)生泄漏奥帘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一仪召、第九天 我趴在偏房一處隱蔽的房頂上張望寨蹋。 院中可真熱鬧,春花似錦扔茅、人聲如沸钥庇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至难述,卻和暖如春萤晴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胁后。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國打工店读, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人攀芯。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓屯断,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子殖演,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容