Facebook SDK 的 FBSDKShareDialog 无法在 iOS9 上运行?
FBSDKShareDialog of Facebook SDK is not working on iOS9?
使用 Xcode7,我将 Facebook SDK 升级到 pod FBSDKShareKit (4.6.0)。我已经将 Facebook 方案添加到白名单中,如下所示。
参考:https://developers.facebook.com/docs/ios/ios9
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
但是,以下代码仅在 iOS9 上显示 iOS 默认社交对话。 iOS8 上具有相同二进制文件的相同代码可以打开 Facebook 应用程序并正确显示共享对话框。
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.example.com"]];
content.contentDescription = @"Test";
[FBSDKShareDialog showFromViewController:self withContent:content delegate:nil];
我猜想在 iOS9 上找不到 Facebook 应用程序,然后显示默认的社交对话框。甚至没有显示错误信息。
我错过了什么吗?或者,这是一个 iOS9 错误?
我猜 Facebook 改变了行为,因为 iOS 9 现在会弹出一个对话框,询问您是否愿意 "Open Facebook?" 在切换应用程序时。即使对于 FBSDKLoginManager,应用程序切换(本机)方法似乎不如模态 UIWebView 更受欢迎。
但是,您仍然可以使用此方法强制共享对话框切换到 Facebook 应用程序(假设您的应用程序 plist 设置如 https://developers.facebook.com/docs/ios/ios9 中所述):
FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fbauth2://"]]){
dialog.mode = FBSDKShareDialogModeNative;
}
else {
dialog.mode = FBSDKShareDialogModeBrowser; //or FBSDKShareDialogModeAutomatic
}
dialog.shareContent = content;
dialog.delegate = self;
dialog.fromViewController = self;
[dialog show];
下面的 iOS 9 是唯一对我有用的解决方案,用于检测设备中是否安装了 facebook 应用程序:
NSString *urlString = @"fbapi://";
NSURL *url1 = [NSURL URLWithString:urlString];
if ([[UIApplication sharedApplication] canOpenURL:url1]) {
[[UIApplication sharedApplication] openURL:url1];
}
else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itunes link for download app"]];
}
使用 Xcode7,我将 Facebook SDK 升级到 pod FBSDKShareKit (4.6.0)。我已经将 Facebook 方案添加到白名单中,如下所示。 参考:https://developers.facebook.com/docs/ios/ios9
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
但是,以下代码仅在 iOS9 上显示 iOS 默认社交对话。 iOS8 上具有相同二进制文件的相同代码可以打开 Facebook 应用程序并正确显示共享对话框。
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.example.com"]];
content.contentDescription = @"Test";
[FBSDKShareDialog showFromViewController:self withContent:content delegate:nil];
我猜想在 iOS9 上找不到 Facebook 应用程序,然后显示默认的社交对话框。甚至没有显示错误信息。
我错过了什么吗?或者,这是一个 iOS9 错误?
我猜 Facebook 改变了行为,因为 iOS 9 现在会弹出一个对话框,询问您是否愿意 "Open Facebook?" 在切换应用程序时。即使对于 FBSDKLoginManager,应用程序切换(本机)方法似乎不如模态 UIWebView 更受欢迎。
但是,您仍然可以使用此方法强制共享对话框切换到 Facebook 应用程序(假设您的应用程序 plist 设置如 https://developers.facebook.com/docs/ios/ios9 中所述):
FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fbauth2://"]]){
dialog.mode = FBSDKShareDialogModeNative;
}
else {
dialog.mode = FBSDKShareDialogModeBrowser; //or FBSDKShareDialogModeAutomatic
}
dialog.shareContent = content;
dialog.delegate = self;
dialog.fromViewController = self;
[dialog show];
下面的 iOS 9 是唯一对我有用的解决方案,用于检测设备中是否安装了 facebook 应用程序:
NSString *urlString = @"fbapi://";
NSURL *url1 = [NSURL URLWithString:urlString];
if ([[UIApplication sharedApplication] canOpenURL:url1]) {
[[UIApplication sharedApplication] openURL:url1];
}
else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itunes link for download app"]];
}