iOS: FBSDKShareDialog 打开应用程序但不允许用户共享 Link
iOS: FBSDKShareDialog Opening App but Not Allowing User to Share Link
我正在尝试将新的 Facebook SDK 集成到我正在开发的应用程序中,但出于某种原因,每当我尝试共享 link 时,共享屏幕都不会出现。我被踢到 Facebook 应用程序(如果没有安装 Facebook 应用程序,则被踢到网络应用程序),但我从来没有选择分享 link 我试图让用户 post.
我几乎完全按照 Facebook 开发者网站上的示例进行了操作,但为了参考,这里是我的代码:
- (IBAction)shareToFacebook:(id)sender {
NSLog(@"Share to Facebook");
FBSDKShareLinkContent *content = [FBSDKShareLinkContent new];
content.contentURL = [NSURL URLWithString:@"http://google.com"];
content.contentTitle = @"Test Post!";
content.contentDescription = @"Content Description;
FBSDKShareDialog *shareDialog = [FBSDKShareDialog new];
[shareDialog setMode:FBSDKShareDialogModeAutomatic];
[shareDialog setShareContent:content];
[shareDialog setFromViewController:self];
[shareDialog show];
// [FBSDKShareDialog showFromViewController:self withContent:content delegate:nil];
}
正如您在上面看到的,我已经尝试使用 Facebook 在他们的文档中使用的便捷方法,以及更冗长的方法,但两者都产生相同的结果(打开 Facebook 应用程序但不给用户一个共享任何内容的选项)。任何帮助都将不胜感激!
如 FBSDKShareDialogMode.h
中所述:
@discussion The automatic mode will progressively check the availability of different modes and open the most
appropriate mode for the dialog that is available.
所以选择另一个Share Dialog Mode。
这实际上是我 info.plist 应用程序中的一个小错字。请提醒其他任何遇到类似错误的人,检查他们在那里设置的所有信息并确保它们都是正确的。
给你加码
[shareDialog setDelegate:self]
<FBSDKSharingDelegate>
到你的 class
FBSDKSharing
代码
#pragma mark - FBSDKSharingDelegate
- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults :(NSDictionary *)results {
NSLog(@"FB: SHARE RESULTS=%@\n",[results debugDescription]);
}
- (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error {
NSLog(@"FB: ERROR=%@\n",[error debugDescription]);
}
- (void)sharerDidCancel:(id<FBSDKSharing>)sharer {
NSLog(@"FB: CANCELED SHARER=%@\n",[sharer debugDescription]);
}
在 didFailWithError
中设置断点,您可以看到许多有趣的底层错误描述。
我只在一个 iPhone 上遇到过这个问题,而在其他 iPhone 上它工作正常。事实证明,该设备中的 Facebook 应用程序已过时,因此 FBSDKShareDialog 未显示。将 Facebook 应用程序更新到最新版本后,FBSDKShareDialog 开始正常工作。
尝试使用此模式:
dialog.mode = FBSDKShareDialogModeFeedWeb
此示例用于使用 swift
从应用程序将图像分享到 Facebook
func shareWithFacebook(){
let share : FBSDKShareLinkContent = FBSDKShareLinkContent()
share.imageURL = NSURL(string: "image url")
share.contentTitle = "content description "
share.contentURL = NSURL(string: "https://www.example.com")
let dialog : FBSDKShareDialog = FBSDKShareDialog()
dialog.fromViewController = self
dialog.shareContent = share
let facebookURL = NSURL(string: "fbauth2://app")
if(UIApplication.sharedApplication().canOpenURL(facebookURL!)){
dialog.mode = FBSDKShareDialogMode.Native
}else{
dialog.mode = FBSDKShareDialogMode.FeedWeb
}
dialog.show()
}
别忘了添加facebook框架
通过本机 iOS 应用程序在 Facebook 上分享。
我们需要在应用程序中安装更新的 FB SDK。
我是用Pods安装的。
link 将 Pod 设置为 Mac:https://cocoapods.org
在 podfile 中写入 pod 文件名:
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
或
手动安装请遵循:https://developers.facebook.com/docs/sharing/ios
成功安装 FB SDK 后。
在按钮操作上编写代码:
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://AppLink"];
content.quote = @"Sample description of app";
[FBSDKShareDialog showFromViewController:self
withContent:content
delegate:nil];
它将自动处理 Native 或 Web(如果未安装。)
我正在尝试将新的 Facebook SDK 集成到我正在开发的应用程序中,但出于某种原因,每当我尝试共享 link 时,共享屏幕都不会出现。我被踢到 Facebook 应用程序(如果没有安装 Facebook 应用程序,则被踢到网络应用程序),但我从来没有选择分享 link 我试图让用户 post.
我几乎完全按照 Facebook 开发者网站上的示例进行了操作,但为了参考,这里是我的代码:
- (IBAction)shareToFacebook:(id)sender {
NSLog(@"Share to Facebook");
FBSDKShareLinkContent *content = [FBSDKShareLinkContent new];
content.contentURL = [NSURL URLWithString:@"http://google.com"];
content.contentTitle = @"Test Post!";
content.contentDescription = @"Content Description;
FBSDKShareDialog *shareDialog = [FBSDKShareDialog new];
[shareDialog setMode:FBSDKShareDialogModeAutomatic];
[shareDialog setShareContent:content];
[shareDialog setFromViewController:self];
[shareDialog show];
// [FBSDKShareDialog showFromViewController:self withContent:content delegate:nil];
}
正如您在上面看到的,我已经尝试使用 Facebook 在他们的文档中使用的便捷方法,以及更冗长的方法,但两者都产生相同的结果(打开 Facebook 应用程序但不给用户一个共享任何内容的选项)。任何帮助都将不胜感激!
如 FBSDKShareDialogMode.h
中所述:
@discussion The automatic mode will progressively check the availability of different modes and open the most appropriate mode for the dialog that is available.
所以选择另一个Share Dialog Mode。
这实际上是我 info.plist 应用程序中的一个小错字。请提醒其他任何遇到类似错误的人,检查他们在那里设置的所有信息并确保它们都是正确的。
给你加码
[shareDialog setDelegate:self]
<FBSDKSharingDelegate>
到你的 classFBSDKSharing
代码#pragma mark - FBSDKSharingDelegate - (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults :(NSDictionary *)results { NSLog(@"FB: SHARE RESULTS=%@\n",[results debugDescription]); } - (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error { NSLog(@"FB: ERROR=%@\n",[error debugDescription]); } - (void)sharerDidCancel:(id<FBSDKSharing>)sharer { NSLog(@"FB: CANCELED SHARER=%@\n",[sharer debugDescription]); }
在 didFailWithError
中设置断点,您可以看到许多有趣的底层错误描述。
我只在一个 iPhone 上遇到过这个问题,而在其他 iPhone 上它工作正常。事实证明,该设备中的 Facebook 应用程序已过时,因此 FBSDKShareDialog 未显示。将 Facebook 应用程序更新到最新版本后,FBSDKShareDialog 开始正常工作。
尝试使用此模式:
dialog.mode = FBSDKShareDialogModeFeedWeb
此示例用于使用 swift
从应用程序将图像分享到 Facebook func shareWithFacebook(){
let share : FBSDKShareLinkContent = FBSDKShareLinkContent()
share.imageURL = NSURL(string: "image url")
share.contentTitle = "content description "
share.contentURL = NSURL(string: "https://www.example.com")
let dialog : FBSDKShareDialog = FBSDKShareDialog()
dialog.fromViewController = self
dialog.shareContent = share
let facebookURL = NSURL(string: "fbauth2://app")
if(UIApplication.sharedApplication().canOpenURL(facebookURL!)){
dialog.mode = FBSDKShareDialogMode.Native
}else{
dialog.mode = FBSDKShareDialogMode.FeedWeb
}
dialog.show()
}
别忘了添加facebook框架
通过本机 iOS 应用程序在 Facebook 上分享。 我们需要在应用程序中安装更新的 FB SDK。
我是用Pods安装的。 link 将 Pod 设置为 Mac:https://cocoapods.org
在 podfile 中写入 pod 文件名:
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
或
手动安装请遵循:https://developers.facebook.com/docs/sharing/ios
成功安装 FB SDK 后。
在按钮操作上编写代码:
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://AppLink"];
content.quote = @"Sample description of app";
[FBSDKShareDialog showFromViewController:self
withContent:content
delegate:nil];
它将自动处理 Native 或 Web(如果未安装。)