如何使用Facebook iOS SDK 4.0 FBSDKShareDialog共享NSData或phassetvideo

我注意到你可以简单地分享NSDatavideo到Facebook的信使:

NSData *videoData = [NSData dataWithContentsOfURL:localVideoUrl]; [FBSDKMessengerSharer shareVideo:videoData withOptions:options]; 

但是,在使用本地video文件或phasset分享到Facebook Feed时,我也遇到了同样的困难。

 FBSDKShareVideo *video = [FBSDKShareVideo videoWithVideoURL:localVideoUrl]; FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init]; [content setVideo: video]; [FBSDKShareDialog showFromViewController:nil withContent:content delegate:self]; 

com.facebook.sdk:FBSDKErrorDeveloperMessageKey =本地对话框只允许资产文件的URL

如何使用phassetvideo进行类似的不错的应用切换行为?

谢谢!

随着新的Facebook SDK 4.0,video必须作为资产的URL传递。 您必须将您的本地videopath复制到资源库,并使用生成的URL在Facebook上共享。

步骤1:

 NSURL *videoURL=[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"IMG_1007" ofType:@"mp4"]]; [self saveToCameraRoll:videoURL]; 

第2步:

 - (void)saveToCameraRoll:(NSURL *)srcURL { NSLog(@"srcURL: %@", srcURL); ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; ALAssetsLibraryWriteVideoCompletionBlock videoWriteCompletionBlock = ^(NSURL *newURL, NSError *error) { if (error) { NSLog( @"Error writing image with metadata to Photo Library: %@", error ); } else { NSLog( @"Wrote image with metadata to Photo Library %@", newURL.absoluteString); url_new = newURL; } }; if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:srcURL]) { [library writeVideoAtPathToSavedPhotosAlbum:srcURL completionBlock:videoWriteCompletionBlock]; } } 

第3步:

 FBSDKShareDialog *shareDialog = [[FBSDKShareDialog alloc] init]; NSURL *videoURL = url_new; FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init]; video.videoURL = videoURL; FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init]; content.video = video; shareDialog.shareContent = content; shareDialog.delegate = self; [shareDialog show]; 

如果您有任何其他查询,请让我知道。

谢谢!

请检查:1)video尺寸小于12MB。 2)共享者应该安装Facebook for iOS客户端,版本为26.0或更高。

你应该使用下面的行:

 NSURL *movieUrl = [info objectForKey:UIImagePickerControllerReferenceURL]; 

代替

 NSURL *movieUrl = [info objectForKey:UIImagePickerControllerMediaURL];