如何使用 UIApplication.shared.open 在 iOS 上选择性地打开其他应用程序

Posted

技术标签:

【中文标题】如何使用 UIApplication.shared.open 在 iOS 上选择性地打开其他应用程序【英文标题】:How to selectively open other apps on iOS using UIApplication.shared.open 【发布时间】:2020-12-13 04:05:30 【问题描述】:

我有一个允许用户打开 URL 的应用程序。这些可以通过 SafariView 处理,但如果应用程序已注册处理 URL,我想使用:

    if UIApplication.shared.canOpenURL(url) 
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    

但是,这似乎是在打开 Safari 时出现的。对于这种情况,我想在我自己的应用程序中使用 SafariView。是否可以选择性地选择使用哪些外部应用程序?

【问题讨论】:

【参考方案1】:

“universalLinksOnly”选项可以与检查完成处理程序是否为真一起使用。

    if UIApplication.shared.canOpenURL(url) 
        UIApplication.shared.open(url, options: [.universalLinksOnly: true], completionHandler:  wasHandled in
            if !wasHandled 
                handleExternalUrlWithSafariView(url)
            
        )
     else 
        handleExternalUrlWithSafariView(url)
    

其中“handleExternalUrlWithSafariView”是我定义的一个函数,用于打开具有给定 URL 的 SafariView。

【讨论】:

以上是关于如何使用 UIApplication.shared.open 在 iOS 上选择性地打开其他应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 扩展和应用程序之间使用 UIApplication.shared 共享 CocoaPod

`UIApplication.shared.canOpenURL(:)` 方法在 iOS 11.4(仅限 iPad 设备)上不起作用?

有没有办法为`UIApplication.shared`添加`if(iOSApplicationExtension)`条件

Swift/iOS13 - UIApplication.shared.delegate.window?.rootViewController?.present() 来自自定义类

swift `UIApplication.shared.isNetworkActivityIndi​​catorVisible`管理クラス(延迟非対応)

swift 8.0之后打开 手机设置