我想在同一部手机上安装的两个Apps之间进行通信。为此,我阅读了许多官方文档,以了解必须实现Custom URL Scheme

在iOS 9之前,似乎我们必须在Info中添加URLType
并定义URL Scheme:“”。

但是在iOS 9之后,它改变了Apps之间的通信方式。

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名称iOSTest。
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>iOSTest</string>
</array>

当我在iPhone上安装两个App进行测试时,它根本无法工作。

这是我的错误!

我的应用程序有什么问题?

最佳答案

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

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

App B是需要注册的应用程序,它必须响应iOSTest,以便在其他一些应用程序使用openURL方案调用iOSTest时将其打开。

关于ios - 无法使用canOpenUrl进行InterApp通信,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36678305/

10-08 21:28