【问题标题】:iOS9: canOpenURL returning false for WhatApp's url schemeiOS9:canOpenURL 为 WhatApp 的 url 方案返回 false
【发布时间】:2016-03-23 15:02:22
【问题描述】:

在我当前的项目中,我需要在 iOS 应用程序的 whatsapp 上分享文本。

这是我在 whatsapp 上分享文本的代码:

NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%2C%20World!"];
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) {
    [[UIApplication sharedApplication] openURL: whatsappURL];
}

canOpenURL 在 iOS9 中总是返回 false。

是否有任何 iOS9 隐私政策? 谁能帮帮我?

【问题讨论】:

  • 在 iOS 9 中引入了 Apple Transport Security。也许这与它有关。它基本上说你不能再发送任何不安全的请求了。但我不确定这是否是这种情况下的问题。
  • ATS 与此无关。 Apple 引入了一个单独的系统,需要在 info.plist 中说明应用程序将使用哪些方案,但它与 ATS 完全正交。

标签: ios objective-c ios9 whatsapp url-scheme


【解决方案1】:

在 iOS 9 中,您必须将您的应用想要在 Info.plist 中的 LSApplicationQueriesSchemes 键(字符串数组)下查询的任何 URL 方案列入白名单:

例如:

因此,在您的情况下,您必须指定 whatsapp,而不是 fbtwitter

请注意,此机制仅适用于 canOpenURL,不适用于 openURL。您不需要在 Info.plist 中列出一个方案就可以使用 openURL 打开它。 希望对您有所帮助。

【讨论】:

  • @MayankModi 很高兴为您提供帮助 :)
  • 对于懒惰的人:这是您的 plist 的代码(将其添加到主 dict 节点的末尾):<key>LSApplicationQueriesSchemes</key> <array> <string>whatsapp</string> </array>
【解决方案2】:

除了@z22 的回答之外,如果您需要以文本方式添加它(例如使用 Xamarin),那么它看起来像这样:

    <dict>
        ... 

        <key>LSApplicationQueriesSchemes</key>
        <array>
            <string>whatsapp</string>
        </array>
    </dict>

【讨论】:

    【解决方案3】:

    步骤:1 在 Info.plist 中添加 LSApplicationQueriesSchemes

    步骤:2 在项目中添加whatsapp

    【讨论】:

      【解决方案4】:

      对我来说,问题是因为我使用的是 URL types 而不是 LSApplicationQueriesSchemes

      它仅适用于 LSApplicationQueriesSchemes

      这将不起作用

      这将工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-13
        • 2015-11-13
        • 2022-10-20
        • 2015-12-29
        • 1970-01-01
        • 1970-01-01
        • 2016-09-25
        相关资源
        最近更新 更多