无法使用canOpenUrl进行InterApp通信

时间:2016-04-17 15:12:56

标签: ios swift url-scheme openurl

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

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

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

网址方案示例在: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)
} 

在My App B,我在Info.plist

中添加了一个网址名称iOSTest
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>iOSTest</string>
</array>

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

这是我的错误!

Error photo

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

1 个答案:

答案 0 :(得分:3)

您安装错误。调用canOpenURL的应用是需要将自定义方案添加到LSApplicationQueriesSchemes列表的应用。

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

应用B将是需要注册它才响应iOSTest的应用,以便当其他应用调用openURL并使用iOSTest方案时,它会被打开。