diff options
-rw-r--r-- | src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp | 22 | ||||
-rw-r--r-- | src/gui/util/qdesktopservices.cpp | 17 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosapplicationdelegate.mm | 20 |
3 files changed, 59 insertions, 0 deletions
diff --git a/src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp b/src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp index b9a8d8d90e..6527021dd6 100644 --- a/src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp +++ b/src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp @@ -96,3 +96,25 @@ QDesktopServices::storageLocation(QDesktopServices::DataLocation) QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/data/organization/application" //! [6] + +//! [7] +<key>com.apple.developer.associated-domains</key> +<array> + <string>applinks:your.domain.com</string> +</array> +//! [7] + +//! [8] +{ + "applinks": { + "apps": [], + "details": [{ + "appIDs" : [ "ABCDE12345.com.example.app" ], + "components": [{ + "/": "/help", + "?": { "topic": "?*"} + }] + }] + } +} +//! [8] diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp index 3b86d0c584..53f84fd24f 100644 --- a/src/gui/util/qdesktopservices.cpp +++ b/src/gui/util/qdesktopservices.cpp @@ -250,6 +250,23 @@ bool QDesktopServices::openUrl(const QUrl &url) For more information, see the Apple Developer Documentation for \l{https://developer.apple.com/documentation/uikit/core_app/allowing_apps_and_websites_to_link_to_your_content/communicating_with_other_apps_using_custom_urls?language=objc}{Communicating with Other Apps Using Custom URLs}. + \warning It is not possible to claim support for some well known URL schemes, including http and https. This is only allowed for Universal Links. + + To claim support for http and https the above entry in the Info.plist file + is not allowed. This is only possible when you add your domain to the + Entitlements file: + + \snippet code/src_gui_util_qdesktopservices.cpp 7 + + iOS will search for /.well-known/apple-app-site-association on your domain, + when the application is installed. If you want to listen to + https://your.domain.com/help?topic=ABCDEF you need to provide the following + content there: + + \snippet code/src_gui_util_qdesktopservices.cpp 8 + + For more information, see the Apple Developer Documentation for + \l{https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app}[Supporting Associated Domains}. If setUrlHandler() is used to set a new handler for a scheme which already has a handler, the existing handler is simply replaced with the new one. diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.mm b/src/plugins/platforms/ios/qiosapplicationdelegate.mm index a56c1e4568..c9fcfd23b6 100644 --- a/src/plugins/platforms/ios/qiosapplicationdelegate.mm +++ b/src/plugins/platforms/ios/qiosapplicationdelegate.mm @@ -50,6 +50,26 @@ @implementation QIOSApplicationDelegate +- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler +{ + Q_UNUSED(application); + Q_UNUSED(restorationHandler); + + if (!QGuiApplication::instance()) + return NO; + + if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) { + QIOSIntegration *iosIntegration = QIOSIntegration::instance(); + Q_ASSERT(iosIntegration); + + QIOSServices *iosServices = static_cast<QIOSServices *>(iosIntegration->services()); + + return iosServices->handleUrl(QUrl::fromNSURL(userActivity.webpageURL)); + } + + return NO; +} + - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options { Q_UNUSED(application); |