Skip to content

Commit 84bbefc

Browse files
committed
Improved startup message queue for WKWebView
1 parent b535dc2 commit 84bbefc

File tree

3 files changed

+20
-11
lines changed

3 files changed

+20
-11
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
0E3214AF19EDF7CF0075E78F /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E8082DC19EDD98700479452 /* WebKit.framework */; };
1011
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, ); }; };
1212
2C1562B5176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2C1562B4176B9F8400B4AE50 /* WebViewJavascriptBridge.js.txt */; };
1313
2C1562C0176BA63500B4AE50 /* WebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C1562A9176B9F6200B4AE50 /* WebViewJavascriptBridge.m */; };
1414
2C45CA2C1884AD520002A4E2 /* ExampleAppViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C45CA2B1884AD520002A4E2 /* ExampleAppViewController.m */; };
@@ -50,7 +50,7 @@
5050
isa = PBXFrameworksBuildPhase;
5151
buildActionMask = 2147483647;
5252
files = (
53-
0E8082DD19EDD98700479452 /* WebKit.framework in Frameworks */,
53+
0E3214AF19EDF7CF0075E78F /* WebKit.framework in Frameworks */,
5454
2CEB3EC01602563600548120 /* UIKit.framework in Frameworks */,
5555
2CEB3EC21602563600548120 /* Foundation.framework in Frameworks */,
5656
2CEB3EC41602563600548120 /* CoreGraphics.framework in Frameworks */,

WebViewJavascriptBridge/WKWebViewJavascriptBridge.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
// Copyright (c) 2014 Loki Meyburg. All rights reserved.
66
//
77

8-
#import <Foundation/Foundation.h>
8+
#if defined(__IPHONE_8_0)
99

10+
#import <Foundation/Foundation.h>
1011
#define kCustomProtocolScheme @"wvjbscheme"
1112
#define kQueueHasMessage @"__WVJB_QUEUE_MESSAGE__"
1213

@@ -29,4 +30,6 @@ typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback);
2930
- (void)callHandler:(NSString*)handlerName data:(id)data responseCallback:(WVJBResponseCallback)responseCallback;
3031
- (void)reset;
3132

32-
@end
33+
@end
34+
35+
#endif

WebViewJavascriptBridge/WKWebViewJavascriptBridge.m

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
// Copyright (c) 2014 Loki Meyburg. All rights reserved.
66
//
77

8+
#if defined(__IPHONE_8_0)
9+
810
#import "WKWebViewJavascriptBridge.h"
911

1012
typedef NSDictionary WVJBMessage;
@@ -236,28 +238,29 @@ - (void)WKFlushMessageQueue {
236238

237239
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
238240
{
241+
NSLog(@"1. Finished navigation");
239242
if (webView != _webView) { return; }
240243

241244
_numRequestsLoading--;
242245

243246
if (_numRequestsLoading == 0) {
244-
245247
[webView evaluateJavaScript:@"typeof WebViewJavascriptBridge == \'object\';" completionHandler:^(NSString *result, NSError *error) {
246248
if(![result boolValue]){
247249
NSBundle *bundle = _resourceBundle ? _resourceBundle : [NSBundle mainBundle];
248250
NSString *filePath = [bundle pathForResource:@"WebViewJavascriptBridge.js" ofType:@"txt"];
249251
NSString *js = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
250252
[webView evaluateJavaScript:js completionHandler:nil];
253+
254+
if (_startupMessageQueue) {
255+
for (id queuedMessage in _startupMessageQueue) {
256+
[self _dispatchMessage:queuedMessage];
257+
}
258+
_startupMessageQueue = nil;
259+
}
251260
}
252261
}];
253262
}
254263

255-
if (_startupMessageQueue) {
256-
for (id queuedMessage in _startupMessageQueue) {
257-
[self _dispatchMessage:queuedMessage];
258-
}
259-
_startupMessageQueue = nil;
260-
}
261264

262265
__strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate;
263266
if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didFinishNavigation:)]) {
@@ -317,3 +320,6 @@ - (void)webView:(WKWebView *)webView
317320

318321

319322
@end
323+
324+
325+
#endif

0 commit comments

Comments
 (0)