不能使用 canOpenUrl 进行 InterApp 通信

Can't use canOpenUrl for InterApp communication

我想在同一个 phone 上安装的两个应用程序之间进行通信。为了做到这一点,我看了很多官方文档才明白,我要实现一个Custom URL Scheme.

在iOS9之前,貌似还要在Info里面加一个URLType 并定义 URL 方案:" ".

但是在iOS9之后,改变了App之间的通信方式。

url 方案示例在以下内容中讨论:Querying URL Schemes with canOpenURL

我的应用A代码如下:

@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)
} 

在我的应用程序 B 中,我在 Info.plist

中添加了一个 url 名称 iOS 测试
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>iOSTest</string>
</array>

当我在iPhone上安装这两个应用程序进行测试时,它根本不起作用。

这是我的错误!

我的应用程序出了什么问题?

您的设置不正确。调用 canOpenURL 的应用是需要将自定义方案添加到 LSApplicationQueriesSchemes 列表的应用。

由于应用程序 A 正在为 iIOSTest 调用 canOpenURL,因此需要将 iOSTest 添加到 LSApplicationQueriesSchemes 列表的是应用程序 A,而不是应用程序 B。

应用程序 B 将是需要注册它响应 iOSTest 的应用程序,以便当其他应用程序使用 iOSTest 调用 openURL 时打开它。