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

6
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个回答

14

您需要使用canOpenURL来查看自定义URL方案fb-messenger://是否可以被打开。 canOpenURL返回一个BOOL值,指示URL的方案是否可以被设备上安装的某个应用程序处理。如果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开始,您必须在info.plist中包含LSApplicationQueriesSchemes

输入图片描述


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

iOS 9 引入了 App Transport Security (ATS) 特性,它要求应用程序在默认情况下使用安全连接来访问网络资源。这有助于提高用户的隐私和安全性,并防止开发人员因错误配置导致的数据泄露风险。但是,如果您的应用程序需要与不支持 ATS 的服务器通信,则需要采取一些措施以便您的应用程序可以继续正常工作。为此,您需要在应用程序的 Info.plist 文件中添加一些键值对,以告知系统哪些域名可以使用非安全连接。


0
在我的情况下,我需要知道是否显示一个按钮,让用户可以按下它来分享Messenger上的内容。这对我的情况起作用,并且它还检查Messenger应用程序是否已安装。
-(BOOL) canShareViaMessenger {
    [[[FBSDKMessageDialog alloc] init] canShow]
}

0

对于使用Swift 3的人,请使用以下代码:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接