2

我一直在使用这样的代码将视频分享到 Facebook:

FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init];
video.videoURL = assetURL;

FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init];
content.video = video;

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
dialog.fromViewController = vc;
dialog.shareContent = content;
dialog.delegate = self;
dialog.mode = FBSDKShareDialogModeShareSheet;
if (![dialog canShow]) {
   dialog.mode = FBSDKShareDialogModeNative;
   if (![dialog canShow]) { dialog.mode = FBSDKShareDialogModeAutomatic; }
}
[dialog show]

其中委托符合 FBSDKSharingDelegate 并实现这些方法来跟踪结果:

-(void)sharer:(id<FBSDKSharing>)sharerdidCompleteWithResults:(NSDictionary*)results;
-(void)sharer:(id<FBSDKSharing>)sharerdidFailWithError:(NSError*)error;
-(void)sharerDidCancel:(id<FBSDKSharing>)sharer;

我观察到这些回调在 iOS 10 上为 FBSDKShareDialogModeShareSheet 工作,但在其他相同的实现中,当使用其他对话模式(例如)FBSDKShareDialogModeNative 时,它​​们不会被调用。在 iOS 11 中,似乎不再提供共享表模式(可能是由于社交框架的更改)。

我的应用程序中没有 Facebook 登录名(也没有任何登录名),除了期望用户在本机 FB 应用程序中进行身份验证外,我也没有做任何事情来请求 FB 权限。是否预计这些回调不会在这些其他对话模式下执行,或者我应该做些什么特别的事情来让它们在这种情况下工作?

FB 文档状态

只要应用程序有权接收信息,代理就会收到共享者的结果通知。例如,如果此人未登录包含应用程序,则共享者可能无法区分共享的完成和取消。

我们显然将用户传递给他们在其中进行身份验证的本机 Facebook 应用程序 - 我不确定为什么这适用于一种对话模式而不适用于另一种对话模式。我宁愿不必要求用户登录,因为重点是使用本机 FB 应用程序并让 FB 在内部管理自己的业务。

任何帮助将非常感激。谢谢!

4

0 回答 0