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

为什么我不能用ios 9打开facebook和twitter应用程序,ios,objective-c,facebook,twitter,ios9,Ios,Objective C,Facebook,Twitter,Ios9,在ios9出现之前,我使用以下代码在点击按钮时用我的应用打开facebook应用。如果手机有facebook应用,它会打开facebook应用,如果没有,它会打开safari浏览器。对于twitter也是如此。这是我的代码 - (IBAction)facebookButton:(id)sender { NSURL *facebookUrl = [NSURL URLWithString:@"fb://profile/number"]; if ([[UIApplication sha

在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中打开。请帮助我执行此操作

我们必须在info.plist中添加以下内容


来自canOpenURL上的Apple文档:方法:

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

如果您的iOS 9.0或更高版本应用程序使用您需要的方案调用此方法 如果未声明,则无论是否 设备上已安装适用于该方案的应用程序

与此方法不同,openURL:方法不受 LSApplicationQueriesSchemes要求:如果处理 如果设备上安装了scheme,那么openURL:方法是否有效 或者你没有宣布这个计划

苹果将这一变化添加到API中,因为canOpenURL:方法通常用于接收安装在用户设备上的应用程序的信息,而不需要实际的openURL:调用

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

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

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

查看通用链接,其工作方式类似——打开应用程序(若在设备上可用),否则URL将在Safari中打开


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

如果您在尝试时阅读iOS打印的日志消息,您会发现它不起作用的原因。是的,thanx和我得到了答案。请再次阅读此帖子,thanx你们两个。我找到了答案,兄弟,thanx,感谢您的解释。我很感激。
if (![[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"fb://profile/number"]]) {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com/number"]];
}