【问题标题】:why can't I open facebook and twitter app with ios 9为什么我不能用 ios 9 打开 facebook 和 twitter 应用程序
【发布时间】:2016-04-30 17:22:13
【问题描述】:

在 ios9 出现之前,我使用以下代码在单击按钮时使用我的应用程序打开 facebook 应用程序。如果手机有 facebook 应用程序,则使用此代码,它会打开 facebook 应用程序,如果没有,它会打开 safari 浏览器。相同对于 twitter。这是我的代码。

- (IBAction)facebookButton:(id)sender {
    NSURL *facebookUrl = [NSURL URLWithString:@"fb://profile/number"];
    if ([[UIApplication sharedApplication] canOpenURL:facebookUrl]) {
        [[UIApplication sharedApplication] openURL:facebookUrl];
    }
    else{
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com/number"]];
    }

}

- (IBAction)twitterButton:(id)sender {
    NSURL *twitterUrl = [NSURL URLWithString:@"twitter://profile/"];
    if ([[UIApplication sharedApplication] canOpenURL:twitterUrl]) {
        [[UIApplication sharedApplication] openURL:twitterUrl];
    }
    else{
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.twitter.com/"]];
    }
}

这在 iOS 9 之前运行良好。但现在如果应用程序存在与否,它只会打开 safari.help me with this

【问题讨论】:

  • 如果您在尝试时阅读iOS打印的日志消息,您会发现它不起作用的原因。
  • 是的,thanx 我得到了答案
  • 再次感谢你们俩。

标签: ios objective-c facebook twitter ios9


【解决方案1】:

我们必须在info.plist添加关注

【讨论】:

    【解决方案2】:

    来自 Apple 关于canOpenURL: 方法的文档:

    如果您的应用在 iOS 9.0 或之后链接,您必须声明 URL 您要传递给此方法的方案。通过使用 Xcode 项目的 Info.plist 中的 LSApplicationQueriesSchemes 数组 文件。对于您希望应用程序使用此方法的每个 URL 方案, 将其作为字符串添加到此数组中。

    如果您的(iOS 9.0 或更高版本)应用使用您的方案调用此方法 尚未声明,该方法返回 NO,无论是否 设备上安装了适用于该方案的应用程序。

    与此方法不同,openURL: 方法不受 LSApplicationQueriesSchemes 要求:如果应用程序处理 设备上安装了方案,openURL:方法有效,是否 或者你没有声明这个方案。

    Apple 将此更改添加到 API,因为 canOpenURL: 方法通常用于接收有关应用程序的信息,安装在用户设备上,而无需实际的 openURL: 调用。

    问题可以通过以下方式解决:

    • 将“fb”和“twitter”URL 方案添加到 Info.plist 中的 LSApplicationQueriesSchemes 数组中;

    • openURL: 方法返回 NO 如果 URL 没有成功打开。您可以通过以下方式重写代码以避免canOpenURL:调用:

      if (![[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"fb://profile/number"]]) {
          [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com/number"]];
      }
      
    • 查看以类似方式工作的通用链接 - 打开应用程序,如果它在设备上可用,否则 URL 在 Safari 中打开。

    【讨论】:

    • 我想通了,兄弟,谢谢你的精彩解释。我很感激。
    【解决方案3】:

    自定义深度链接模式不再适用于 iOS9。您需要使用通用链接。请参阅this 指南。

    【讨论】:

      猜你喜欢
      • 2016-02-24
      • 2016-11-22
      • 1970-01-01
      • 2014-10-07
      • 2014-05-30
      • 2017-02-21
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      相关资源
      最近更新 更多