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

时间:2015-09-22 09:28:15

标签: ios facebook ios9 messenger

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

  不推荐使用

messengerPlatformCapabilities:从iOS 9开始不推荐使用。如果您使用此功能,则必须按照https://developers.facebook.com/docs/ios/ios9

中的说明配置您的plist

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

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

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

4 个答案:

答案 0 :(得分:13)

您需要使用canOpenURL查看是否可以打开自定义网址结构fb-messenger://canOpenURL返回BOOL值,表示该设备上安装的某个应用是否可以处理该网址的方案。如果canOpenURL返回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开始,您必须在LSApplicationQueriesSchemes中添加info.plist

enter image description here

答案 1 :(得分:2)

自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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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