Skip to content

Commit 5183c4c

Browse files
author
Kamil Burczyk
committed
Added possibility to set custom bundle where core bridge.js script is located
1 parent 0bcdafa commit 5183c4c

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

WebViewJavascriptBridge/WebViewJavascriptBridge.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback);
2929

3030
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView handler:(WVJBHandler)handler;
3131
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)handler;
32+
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)handler resourceBundle:(NSBundle*)bundle;
3233
+ (void)enableLogging;
3334

3435
- (void)send:(id)message;

WebViewJavascriptBridge/WebViewJavascriptBridge.m

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ @implementation WebViewJavascriptBridge {
2525
long _uniqueId;
2626
WVJBHandler _messageHandler;
2727

28+
NSBundle *_resourceBundle;
29+
2830
#if defined WVJB_PLATFORM_IOS
2931
NSUInteger _numRequestsLoading;
3032
#endif
@@ -42,8 +44,13 @@ + (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView handler:(WVJBHandle
4244
}
4345

4446
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)messageHandler {
47+
return [self bridgeForWebView:webView webViewDelegate:webViewDelegate handler:messageHandler resourceBundle:nil];
48+
}
49+
50+
+ (instancetype)bridgeForWebView:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)messageHandler resourceBundle:(NSBundle*)bundle
51+
{
4552
WebViewJavascriptBridge* bridge = [[WebViewJavascriptBridge alloc] init];
46-
[bridge _platformSpecificSetup:webView webViewDelegate:webViewDelegate handler:messageHandler];
53+
[bridge _platformSpecificSetup:webView webViewDelegate:webViewDelegate handler:messageHandler resourceBundle:bundle];
4754
[bridge reset];
4855
return bridge;
4956
}
@@ -222,7 +229,7 @@ - (void)_log:(NSString *)action json:(id)json {
222229
**********************************/
223230
#if defined WVJB_PLATFORM_OSX
224231

225-
- (void) _platformSpecificSetup:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)messageHandler {
232+
- (void) _platformSpecificSetup:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJB_WEBVIEW_DELEGATE_TYPE*)webViewDelegate handler:(WVJBHandler)messageHandler resourceBundle:(NSBundle*)bundle{
226233
_messageHandler = messageHandler;
227234
_webView = webView;
228235
_webViewDelegate = webViewDelegate;
@@ -231,6 +238,8 @@ - (void) _platformSpecificSetup:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(WVJ
231238
_webView.frameLoadDelegate = self;
232239
_webView.resourceLoadDelegate = self;
233240
_webView.policyDelegate = self;
241+
242+
_resourceBundle = bundle;
234243
}
235244

236245
- (void) _platformSpecificDealloc {
@@ -244,7 +253,8 @@ - (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)frame
244253
if (webView != _webView) { return; }
245254

246255
if (![[webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {
247-
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"WebViewJavascriptBridge.js" ofType:@"txt"];
256+
NSBundle *bundle = _resourceBundle ? _resourceBundle : [NSBundle mainBundle];
257+
NSString *filePath = [bundle pathForResource:@"WebViewJavascriptBridge.js" ofType:@"txt"];
248258
NSString *js = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
249259
[webView stringByEvaluatingJavaScriptFromString:js];
250260
}
@@ -312,12 +322,13 @@ - (NSURLRequest *)webView:(WebView *)webView resource:(id)identifier willSendReq
312322
**********************************/
313323
#elif defined WVJB_PLATFORM_IOS
314324

315-
- (void) _platformSpecificSetup:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(id<UIWebViewDelegate>)webViewDelegate handler:(WVJBHandler)messageHandler {
325+
- (void) _platformSpecificSetup:(WVJB_WEBVIEW_TYPE*)webView webViewDelegate:(id<UIWebViewDelegate>)webViewDelegate handler:(WVJBHandler)messageHandler resourceBundle:(NSBundle*)bundle{
316326
_messageHandler = messageHandler;
317327
_webView = webView;
318328
_webViewDelegate = webViewDelegate;
319329
_messageHandlers = [NSMutableDictionary dictionary];
320330
_webView.delegate = self;
331+
_resourceBundle = bundle;
321332
}
322333

323334
- (void) _platformSpecificDealloc {
@@ -330,7 +341,8 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView {
330341
_numRequestsLoading--;
331342

332343
if (_numRequestsLoading == 0 && ![[webView stringByEvaluatingJavaScriptFromString:@"typeof WebViewJavascriptBridge == 'object'"] isEqualToString:@"true"]) {
333-
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"WebViewJavascriptBridge.js" ofType:@"txt"];
344+
NSBundle *bundle = _resourceBundle ? _resourceBundle : [NSBundle mainBundle];
345+
NSString *filePath = [bundle pathForResource:@"WebViewJavascriptBridge.js" ofType:@"txt"];
334346
NSString *js = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
335347
[webView stringByEvaluatingJavaScriptFromString:js];
336348
}

0 commit comments

Comments
 (0)