iOS 14 canOpenURL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 14 canOpenURL相关的知识,希望对你有一定的参考价值。
参考技术A 不知道是 bug 还是 ios 14 之后苹果的规定:只有加到 info.plist -> LSApplicationQueriesSchemes 中的 scheme, 使用 canOpenURL , 才返回 true, 即使是 http 和 https 没加到 LSApplicationQueriesSchemes 也会返回 false.
整挺好! 贴心, 安全.
reference: canOpenURL returns false when I changed the default browser on iOS 14
无法使用 canOpenUrl 进行 InterApp 通信
【中文标题】无法使用 canOpenUrl 进行 InterApp 通信【英文标题】:Can't use canOpenUrl for InterApp communication 【发布时间】:2016-04-17 15:12:56 【问题描述】:我想在同一部手机上安装的两个应用程序之间进行通信。为了做到这一点,我阅读了很多官方文档,了解到我必须实现一个Custom URL Scheme。
在iOS 9之前,好像我们得在Info中加个URLType 并定义 URL Scheme : " "。
但在 iOS 9 之后,它改变了 App 之间的通信方式。
url 方案示例在:Querying URL Schemes with canOpenURL 中讨论。
我的应用代码如下:
@IBAction func sender(sender: AnyObject)
let ourapplication : UIApplication = UIApplication.sharedApplication()
let ourpath : String = "iOSTest://"
//.stringByAppendingString(urlEncodedText)
let oururl : NSURL = NSURL(string: ourpath)!
ourapplication.canOpenURL(oururl)
在我的 App B 中,我在 Info.plist 中添加了一个 URL 名称 iOSTest
<key>LSApplicationQueriesSchemes</key>
<array>
<string>iOSTest</string>
</array>
当我在我的 iPhone 上安装这两个 App 进行测试时,它根本不起作用。
这是我的错误!
我的应用有什么问题?
【问题讨论】:
【参考方案1】:您的设置不正确。调用canOpenURL
的应用是需要将自定义方案添加到LSApplicationQueriesSchemes
列表的应用。
由于 App A 为 iIOSTest
调用 canOpenURL
,因此需要将 iOSTest
添加到 LSApplicationQueriesSchemes
列表中的是 App A,而不是 App B。
应用 B 将是需要注册以响应 iOSTest
的应用,以便当其他应用使用 iOSTest
的方案调用 openURL
时将打开它。
【讨论】:
是的,完全正确。只需交换LSApplicationQueriesSchemes
你在问什么?如何在 App B 中注册自定义方案或您必须在 App B 中编写什么代码?无论哪种方式,这是一个完全不同的问题。文档和这里的许多其他问题都涵盖了所有内容。这个问题应该被关闭,因为它已经解决了。如果您在其他问题上需要帮助,请发布针对该问题的另一个问题。
你现在有什么问题?
当我将 LSApplicationQueriesSchemes 交换到 App A 时,单击 canOpenURL 按钮仍然不起作用。但是当我将 canOpenURL 更改为 openUrl 时,它起作用了!!!!我不明白为什么 canOpenURL 不起作用?
定义“不起作用”。发生什么了?你得到什么信息?以上是关于iOS 14 canOpenURL的主要内容,如果未能解决你的问题,请参考以下文章
iOS 14 Filza 发布丨iOS 14 越狱也不远了!