2016-04-17 47 views
1

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

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

但是在iOS 9之后,它改变了应用程序之间通信的方式。

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

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

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>iOSTest</string> 
</array> 

我的iPhone上添加URL名称iOSTest当我安装这两个应用程序来测试,它根本不起作用。

这是我的错误!

Error photo

这有什么错我的应用程序?

回答

3

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

由于应用程序A被调用canOpenURLiIOSTest,它是一个应用程序,需要添加iOSTestLSApplicationQueriesSchemes列表,而不是应用程序B.

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

+0

是的,正好。只需交换'LSApplicationQueriesSchemes' –

+0

你在问什么?如何使用App B注册自定义方案,或者您需要在App B中编写哪些代码?无论哪种方式,这是一个完全不同的问题。这些都覆盖在文档和其他许多问题中。这个问题应该被解决后才能关闭。如果您需要额外问题的帮助,请发布针对该问题的其他问题。 – rmaddy

+0

我不明白为什么canOpenURL不起作用? – HungCLo