在 WKWebView 中加载 link 时,我如何知道外部应用程序是否会打开?

How can I know if external app will be open or not when a link is loaded in WKWebView?

我有一个 WKWebView,webview 会加载一个 link,比如 https://qr.payme.hsbc.com/2/XXXXYYYZZZ

加载 link 时有两种可能的结果,
情况1是一个名为Payme的应用程序将在用户安装Payme应用程序时打开;
情况 2 是当用户没有安装 Payme 应用程序时,webview 将被重定向到一个静态页面 https://payme.hsbc.com/

我的问题是如何知道Payme应用程序是否已打开?

您可以使用deep linking或苹果推荐的universal linking来检查设备中是否安装了应用程序。使用 deep linking 您需要做的是获取应用程序已添加的应用程序架构。您可以像打开任何其他类型的 URL 一样检查架构是否可以打开。这是一个例子:

let appSchemeString = "com.myAppScheme://"
let url = URL(string: appSchemeString)!
if UIApplication.shared.canOpenURL(url) {
    print("App is present")
} else {
    print("App is not")
}

您需要更新 info.plist 文件以包含您将在应用程序中打开的方案。你应该附加这个:

<key>LSApplicationQueriesSchemes</key> 
<array>
<string>com.myAppScheme</string> 
</array>

这是关于此的完整 YouTube 视频 link。 另外,结账 universal-linking.