为什么我不能用ios 9打开facebook和twitter应用程序

时间:2016-01-24 11:07:56

标签: ios objective-c facebook twitter ios9

在ios9出现之前,当按下按钮时,我使用以下代码用我的应用程序打开Facebook应用程序。如果手机有Facebook应用程序,则打开Facebook应用程序,如果不是,则打开safari browser.same对于twitter.this是我的代码。

- (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我这个

3 个答案:

答案 0 :(得分:3)

我们必须在info.plist

中添加以下内容

enter image description here

答案 1 :(得分:1)

来自canOpenURL:方法的Apple文档:

  

如果您的应用在iOS 9.0上或之后进行了关联,则必须声明该网址   您想要传递给此方法的方案。这样做是通过使用   Xcode项目的Info.plist中的LSApplicationQueriesSchemes数组   文件。对于您希望应用与此方法一起使用的每种网址方案,   将其添加为此数组中的字符串。

     

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

     

与此方法不同,openURL:方法不受约束   LSApplicationQueriesSchemes要求:如果一个应用程序处理一个   方案安装在设备上,openURL:方法是否有效   或不是你已经宣布了这个计划。

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

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

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

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

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

答案 2 :(得分:0)

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