on master help sign in
Allow opening of urls in web browser, email etc.
commit399054ee3cd4d2bb3b207460298453c7b6d85a61 authorHamish Mackenzie <Hamish.K.Mackenzie@googlemail.com> dateTue 21 Feb 2017, 13:45 (10 years ago) parent260aade
2 files changed+17−1
jsaddle-wkwebview/cbits-uikit/AppDelegate.m+1−1 jsaddle-wkwebview/cbits/WKWebView.m+16
jsaddle-wkwebview/cbits-uikit/AppDelegate.m+1−1
@@ -58,7 +58,7 @@ void runInWKWebView(HsStablePtr handler, const char * _Nonnull progName) {
5858BOOL openApp(NSURL * url) {
5959 UIApplication *app = [UIApplication sharedApplication];
6060 if ([app canOpenURL:url]) {
61− [app open:url];
61+ [app openURL:url];
6262 return true;
6363 }
6464 return false;
jsaddle-wkwebview/cbits/WKWebView.m+16
@@ -2,6 +2,8 @@
22#import <Foundation/Foundation.h>
33#import <WebKit/WebKit.h>
44
5+BOOL openApp(NSURL * url);
6+
57extern void jsaddleStart(HsStablePtr);
68extern void jsaddleResult(HsStablePtr, const char * _Nonnull result);
79
@@ -37,6 +39,20 @@ extern void jsaddleResult(HsStablePtr, const char * _Nonnull result);
3739 jsaddleResult(self.resultHandler, [s UTF8String]);
3840}
3941
42+- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
43+{
44+ NSURL *url = navigationAction.request.URL;
45+
46+ if(!navigationAction.targetFrame && ![url.scheme isEqualToString:@"file"]) {
47+ if(openApp(url))
48+ decisionHandler(WKNavigationActionPolicyCancel);
49+ else
50+ decisionHandler(WKNavigationActionPolicyAllow);
51+ }
52+ else
53+ decisionHandler(WKNavigationActionPolicyAllow);
54+}
55+
4056@end
4157
4258void addJSaddleHandler(WKWebView *webView, HsStablePtr startHandler, HsStablePtr resultHandler) {