Skip to content

Commit b535dc2

Browse files
committed
Updated the example app to use WKWebView
1 parent f39324d commit b535dc2

File tree

6 files changed

+53
-20
lines changed

6 files changed

+53
-20
lines changed

Example Apps/ExampleApp-iOS.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
/* Begin PBXBuildFile section */
1010
0E8082DB19EDC32300479452 /* WKWebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E8082DA19EDC32300479452 /* WKWebViewJavascriptBridge.m */; };
11+
0E8082DD19EDD98700479452 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E8082DC19EDD98700479452 /* WebKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
1112
2C1562B5176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt */; };
1213
2C1562C0176BA63500B4AE50 /* WebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C1562A9176B9F6200B4AE50 /* WebViewJavascriptBridge.m */; };
1314
2C45CA2C1884AD520002A4E2 /* ExampleAppViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C45CA2B1884AD520002A4E2 /* ExampleAppViewController.m */; };
@@ -24,6 +25,7 @@
2425
/* Begin PBXFileReference section */
2526
0E8082D919EDC32300479452 /* WKWebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewJavascriptBridge.h; sourceTree = "<group>"; };
2627
0E8082DA19EDC32300479452 /* WKWebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WKWebViewJavascriptBridge.m; sourceTree = "<group>"; };
28+
0E8082DC19EDD98700479452 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
2729
2C1562A8176B9F6200B4AE50 /* WebViewJavascriptBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.h; sourceTree = "<group>"; };
2830
2C1562A9176B9F6200B4AE50 /* WebViewJavascriptBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge.m; sourceTree = "<group>"; };
2931
2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebViewJavascriptBridge.js.txt; sourceTree = "<group>"; };
@@ -48,6 +50,7 @@
4850
isa = PBXFrameworksBuildPhase;
4951
buildActionMask = 2147483647;
5052
files = (
53+
0E8082DD19EDD98700479452 /* WebKit.framework in Frameworks */,
5154
2CEB3EC01602563600548120 /* UIKit.framework in Frameworks */,
5255
2CEB3EC21602563600548120 /* Foundation.framework in Frameworks */,
5356
2CEB3EC41602563600548120 /* CoreGraphics.framework in Frameworks */,
@@ -116,6 +119,7 @@
116119
2CEB3EBE1602563600548120 /* Frameworks */ = {
117120
isa = PBXGroup;
118121
children = (
122+
0E8082DC19EDD98700479452 /* WebKit.framework */,
119123
2CEB3EBF1602563600548120 /* UIKit.framework */,
120124
2CEB3EC11602563600548120 /* Foundation.framework */,
121125
2CEB3EC31602563600548120 /* CoreGraphics.framework */,

Example Apps/ExampleApp-iOS/ExampleAppViewController.h

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,21 @@
88

99
#import <UIKit/UIKit.h>
1010

11-
@interface ExampleAppViewController : UINavigationController <UIWebViewDelegate>
11+
12+
#if defined(__IPHONE_8_0)
13+
#import <WebKit/WebKit.h>
14+
#define EXAMPLE_WEBVIEW_TYPE WKWebView
15+
#define EXAMPLE_WEBVIEW_DELEGATE_TYPE NSObject<WKNavigationDelegate>
16+
#define EXAMPLE_WEBVIEW_DELEGATE_CONTROLLER UINavigationController<WKNavigationDelegate>
17+
#define EXAMPLE_BRIDGE_TYPE WKWebViewJavascriptBridge
18+
#else
19+
#define EXAMPLE_WEBVIEW_TYPE UIWebView
20+
#define EXAMPLE_WEBVIEW_DELEGATE_TYPE NSObject<UIWebViewDelegate>
21+
#define EXAMPLE_WEBVIEW_DELEGATE_CONTROLLER UINavigationController<UIWebViewDelegate>
22+
#define EXAMPLE_BRIDGE_TYPE WebViewJavascriptBridge
23+
#endif
24+
25+
26+
@interface ExampleAppViewController : EXAMPLE_WEBVIEW_DELEGATE_CONTROLLER
1227

1328
@end

Example Apps/ExampleApp-iOS/ExampleAppViewController.m

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,44 @@
77
//
88

99
#import "ExampleAppViewController.h"
10+
11+
#if defined(__IPHONE_8_0)
12+
#import "WKWebViewJavascriptBridge.h"
13+
# else
1014
#import "WebViewJavascriptBridge.h"
15+
#endif
1116

1217
@interface ExampleAppViewController ()
13-
@property WebViewJavascriptBridge* bridge;
18+
19+
@property EXAMPLE_BRIDGE_TYPE* bridge;
20+
1421
@end
1522

1623
@implementation ExampleAppViewController
1724

1825
- (void)viewWillAppear:(BOOL)animated {
1926
if (_bridge) { return; }
2027

21-
UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
22-
[self.view addSubview:webView];
28+
#if defined(__IPHONE_8_0)
29+
WKWebView* webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
30+
webView.navigationDelegate = self;
31+
[self.view addSubview:webView];
32+
[WKWebViewJavascriptBridge enableLogging];
33+
_bridge = [WKWebViewJavascriptBridge bridgeForWebView:webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {
34+
NSLog(@"ObjC received message from JS: %@", data);
35+
responseCallback(@"Response for message from ObjC");
36+
}];
37+
#else
38+
UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
39+
[self.view addSubview:webView];
40+
[WebViewJavascriptBridge enableLogging];
41+
_bridge = [WebViewJavascriptBridge bridgeForWebView:webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {
42+
NSLog(@"ObjC received message from JS: %@", data);
43+
responseCallback(@"Response for message from ObjC");
44+
}];
45+
#endif
2346

24-
[WebViewJavascriptBridge enableLogging];
25-
26-
_bridge = [WebViewJavascriptBridge bridgeForWebView:webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {
27-
NSLog(@"ObjC received message from JS: %@", data);
28-
responseCallback(@"Response for message from ObjC");
29-
}];
47+
3048

3149
[_bridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {
3250
NSLog(@"testObjcCallback called: %@", data);
@@ -53,7 +71,7 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView {
5371
NSLog(@"webViewDidFinishLoad");
5472
}
5573

56-
- (void)renderButtons:(UIWebView*)webView {
74+
- (void)renderButtons:(EXAMPLE_WEBVIEW_TYPE*)webView {
5775
UIFont* font = [UIFont fontWithName:@"HelveticaNeue" size:12.0];
5876

5977
UIButton *messageButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
@@ -92,7 +110,7 @@ - (void)callHandler:(id)sender {
92110
}];
93111
}
94112

95-
- (void)loadExamplePage:(UIWebView*)webView {
113+
- (void)loadExamplePage:(EXAMPLE_WEBVIEW_TYPE*)webView {
96114
NSString* htmlPath = [[NSBundle mainBundle] pathForResource:@"ExampleApp" ofType:@"html"];
97115
NSString* appHtml = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil];
98116
NSURL *baseURL = [NSURL fileURLWithPath:htmlPath];

Example Apps/ExampleApp.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<!doctype html>
22
<html><head>
3+
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0">
34
<style type='text/css'>
45
html { font-family:Helvetica; color:#222; }
56
h1 { color:steelblue; font-size:24px; margin-top:24px; }

WebViewJavascriptBridge/WKWebViewJavascriptBridge.h

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,7 @@
1010
#define kCustomProtocolScheme @"wvjbscheme"
1111
#define kQueueHasMessage @"__WVJB_QUEUE_MESSAGE__"
1212

13-
14-
#if defined(__IPHONE_8_0)
15-
#import <WebKit/WebKit.h>
16-
#define WVJB_PLATFORM_IOS
17-
// #define WVJB_WEBVIEW_TYPE WKWebView
18-
// #define WVJB_WEBVIEW_DELEGATE_TYPE NSObject<WKNavigationDelegate>
19-
#endif
20-
13+
#import <WebKit/WebKit.h>
2114
typedef void (^WVJBResponseCallback)(id responseData);
2215
typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback);
2316

WebViewJavascriptBridge/WKWebViewJavascriptBridge.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,8 @@ - (void)webView:(WKWebView *)webView
283283

284284
if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationAction:decisionHandler:)]) {
285285
[_webViewDelegate webView:webView decidePolicyForNavigationAction:navigationAction decisionHandler:decisionHandler];
286+
} else {
287+
decisionHandler(WKNavigationActionPolicyAllow);
286288
}
287289
}
288290

0 commit comments

Comments
 (0)