iOS9:canOpenURL 为 WhatApp 的 url scheme 返回 false

问题描述 投票:0回答:5

在我当前的项目中,我需要从 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 objective-c ios9 whatsapp url-scheme
5个回答
61
投票

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

例如:

因此,在您的情况下,您必须指定

fb
,而不是
twitter
whatsapp

注意这个机制只适用于canOpenURL,不适用openURL。您无需在 Info.plist 中列出方案即可使用 openURL 打开它。


5
投票

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

    <dict>
        ... 

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

0
投票

Step:1 在Info.plist中添加LSApplicationQueriesSchemes

Step:2 在项目中添加whatsapp


0
投票

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

它只适用于LSApplicationQueriesSchemes

这将不起作用

这将工作


0
投票

对于仍然发现此问题的人来说,这是因为 canOpenURL 滥用检查所有已安装的应用程序。使用 Open 代替并等待异步结果。

UIApplication.shared.open(url, options: [:], completionHandler: {success in
            if !success { self.screen?.showToast(message: "App not installed")}
        })
© www.soinside.com 2019 - 2024. All rights reserved.