不能使用 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
时打开它。
我想在同一个 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
时打开它。