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
?先感谢您。
答案 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
。
答案 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
}
答案 2 :(得分:0)
对于使用 Swift 3 的用户,请使用:
UIApplication.shared.canOpenURL(URL(string: "fb-messenger-api://")!)
答案 3 :(得分:0)
在我的情况下,我需要知道是否显示用户可以按下以在信使上分享内容的按钮。这适用于我的情况,它还会检查是否安装了Messenger应用程序。
-(BOOL) canShareViaMessenger {
[[[FBSDKMessageDialog alloc] init] canShow]
}