From c505a7b4bb14c532a2f343fd27032bd97ad716b7 Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sun, 4 Aug 2019 16:14:46 +0100 Subject: IOS7: Implement opening a URL --- backends/platform/ios7/ios7_osys_main.cpp | 1 + backends/platform/ios7/ios7_osys_main.h | 2 ++ backends/platform/ios7/ios7_osys_video.mm | 13 +++++++++++++ 3 files changed, 16 insertions(+) (limited to 'backends/platform/ios7') diff --git a/backends/platform/ios7/ios7_osys_main.cpp b/backends/platform/ios7/ios7_osys_main.cpp index 6f69e20d70..07af3118c2 100644 --- a/backends/platform/ios7/ios7_osys_main.cpp +++ b/backends/platform/ios7/ios7_osys_main.cpp @@ -173,6 +173,7 @@ bool OSystem_iOS7::hasFeature(Feature f) { case kFeatureFilteringMode: case kFeatureVirtualKeyboard: case kFeatureClipboardSupport: + case kFeatureOpenUrl: return true; default: diff --git a/backends/platform/ios7/ios7_osys_main.h b/backends/platform/ios7/ios7_osys_main.h index 6555125737..4fb3049d75 100644 --- a/backends/platform/ios7/ios7_osys_main.h +++ b/backends/platform/ios7/ios7_osys_main.h @@ -210,6 +210,8 @@ public: virtual Common::String getTextFromClipboard(); virtual bool setTextInClipboard(const Common::String &text); + virtual bool openUrl(const Common::String &url); + protected: void initVideoContext(); void updateOutputSurface(); diff --git a/backends/platform/ios7/ios7_osys_video.mm b/backends/platform/ios7/ios7_osys_video.mm index 05093e5428..f0a7db6265 100644 --- a/backends/platform/ios7/ios7_osys_video.mm +++ b/backends/platform/ios7/ios7_osys_video.mm @@ -642,3 +642,16 @@ bool OSystem_iOS7::setTextInClipboard(const Common::String &text) { [pb setString:[NSString stringWithCString:text.c_str() encoding:encoding]]; return true; } + +bool OSystem_iOS7::openUrl(const Common::String &url) { + UIApplication *application = [UIApplication sharedApplication]; + NSURL *nsurl = [NSURL URLWithString:[NSString stringWithCString:url.c_str() encoding:NSISOLatin1StringEncoding]]; + // The way to oipen a URL has changed in iOS 10. Check if the iOS 10 method is recognized + // and otherwise use the old method. + if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) { + [application openURL:nsurl options:@{} completionHandler:nil]; + return true; + } else { + return [application openURL:nsurl]; + } +} -- cgit v1.2.3