检查用户是否安装了 Facebook Messenger iOS 9

Check if user has Facebook Messenger installed iOS 9

Facebook 已弃用用于检查用户是否安装了 Messenger 应用程序的方法 [FBSDKMessengerSharer messengerPlatformCapabilities]。在警告消息中,它说:

messengerPlatformCapabilities is deprecated: This is deprecated as of iOS 9. If you use this, you must configure your plist as described in https://developers.facebook.com/docs/ios/ios9

我想删除此方法,但还没有找到任何其他选项来替换此代码(如果用户未安装 Messenger 应用程序,该按钮将被禁用):

if (![FBSDKMessengerSharer messengerPlatformCapabilities]) {
    [self.inviteFriendsButton setEnabled:NO];
    [self.inviteFriendsButton setAlpha:0.5f];
}

还有其他方法吗?或者,作为新的 iOS 要求,我应该避免使用这个 if?先感谢您。

你会想用canOpenURL看看自定义URL方案fb-messenger://是否可以打开。 canOpenURL returns 一个 BOOL 值,指示 URL 的方案是否可以由安装在设备上的某些应用程序处理。如果 canOpenURL returns YES 则应用程序存在于设备上。

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb-messenger://"]]) {
    // Installed
    [self.inviteFriendsButton setEnabled:YES];
    [self.inviteFriendsButton setAlpha:1.0];
}
else {
    // NOT Installed
    [self.inviteFriendsButton setEnabled:NO];
    [self.inviteFriendsButton setAlpha:0.5];
}

此外,从 iOS 9 开始,您必须在 info.plist 中包含 LSApplicationQueriesSchemes

自 Facebook SDK v4.6.0 发布以来,他们使用 fb-messenger-api 作为他们的 URL 方案。

Swift 2.3

if UIApplication.sharedApplication().canOpenURL(NSURL(string: "fb-messenger-api://")!) {
    // Installed
} else {
    // Not installed
}

来源:https://developers.facebook.com/docs/ios/ios9

对于使用 Swift 3 的用户,请使用:

UIApplication.shared.canOpenURL(URL(string: "fb-messenger-api://")!)

在我的例子中,我需要知道是否显示一个按钮,用户可以按下该按钮在 Messenger 上共享内容。这适用于我的情况,它还会检查是否安装了 Messenger 应用程序。

-(BOOL) canShareViaMessenger {
    [[[FBSDKMessageDialog alloc] init] canShow]
}