【问题标题】:Can't use canOpenUrl for InterApp communication无法使用 canOpenUrl 进行 InterApp 通信
【发布时间】:2016-04-17 15:12:56
【问题描述】:

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

在iOS 9之前,好像我们得在Info中加个URLType 并定义 URL Scheme : " "。

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

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

在我的 App B 中,我在 Info.plist 中添加了一个 URL 名称 iOSTest

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

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

这是我的错误!

我的应用有什么问题?

【问题讨论】:

    标签: ios swift url-scheme openurl


    【解决方案1】:

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

    由于 App A 为 iIOSTest 调用 canOpenURL,因此需要将 iOSTest 添加到 LSApplicationQueriesSchemes 列表中的是 App A,而不是 App B。

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

    【讨论】:

    • 是的,完全正确。只需交换LSApplicationQueriesSchemes
    • 你在问什么?如何在 App B 中注册自定义方案或您必须在 App B 中编写什么代码?无论哪种方式,这是一个完全不同的问题。文档和这里的许多其他问题都涵盖了所有内容。这个问题应该被关闭,因为它已经解决了。如果您在其他问题上需要帮助,请发布针对该问题的另一个问题。
    • 你现在有什么问题?
    • 当我将 LSApplicationQueriesSchemes 交换到 App A 时,单击 canOpenURL 按钮仍然不起作用。但是当我将 canOpenURL 更改为 openUrl 时,它起作用了!!!!我不明白为什么 canOpenURL 不起作用?
    • 定义“不起作用”。发生什么了?你得到什么信息?
    猜你喜欢
    • 2017-05-04
    • 1970-01-01
    • 2019-01-13
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    相关资源
    最近更新 更多