ios - canOpenURL 返回 true 并且应用程序已安装但应用程序未打开
问题描述
当我canOpenURL
用来打开通用链接时,(安装了目标应用程序)
canOpenURL
返回 true,但应用程序未打开(LSApplicationQueriesSchemes
未注册)
但如果我使用open(_ url, options)
应用程序正在打开
如果我负责不注册LSApplicationQueriesSchemes
,我如何注册 Universal 的链接LSApplicationQueriesSchemes
?(https://www.aaa.com)
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https://www.aaa.com</string>
</array>
像这样?
解决方案
如果 AAA 是您尝试打开的应用程序,还有另一种方法可以从您的应用程序内部启动它。您将需要获取CFBundleURLSchemes
目标应用程序使用的。
对于 AAA 来说,它是“aaamobile” 对于 AAA 汽车俱乐部来说,它是“aaamobileace”
然后,您需要将 url 方案添加到您的 plist 中:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>aaamobile</string>
</array>
然后在您的代码中,您可以检查应用程序是否已安装并启动应用程序或将用户带到网站:
guard let url = URL(string: "aaamobile://") else { return }
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.open(URL(string: "https://www.aaa.com")!, options: [:], completionHandler: nil)
}
推荐阅读
- python-3.x - 在pygame中绘制像素艺术的有效方法
- smalltalk - 我如何在 ubuntu 中运行 gnu-smalltalk?
- vb.net - VB写lambda方式的区别
- python - 如何使用密钥从 JSON 文件中获取值?
- c# - 在 DFT 中对任意点进行采样?
- drupal - Drupal\Core\Asset\JsCollectionOptimizer (Flexslider) Drupal 8 中没有这样的文件或目录
- ubuntu-18.04 - Lightsail 启动脚本是否仅在新实例初始化时运行?
- http - 通过http文件打开后更改服务器上ftp文件的目录
- python-3.x - taggit 模块在生产服务器中找不到错误(python 任何地方)
- swift - 如何在collectionView中实现三个项目的网格