2015-04-01 46 views
5

phasset視頻我注意到你可以分享的NSData視頻到Facebook的使者簡單:如何共享的NSData或使用Facebook的iOS版SDK 4.0 FBSDKShareDialog

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

但我有困難做同樣分享到Facebook的飼料 時使用本地視頻文件或phasset。

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允許用於本地對話框

我怎麼會去具有類似不錯的應用程序切換使用phasset視頻的行爲嗎?

謝謝!

回答

12

使用新的Facebook SDK 4.0,視頻必須作爲資產URL傳遞。您必須將本地視頻路徑複製到資源庫,並使用生成的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]; 

如果您有任何其他查詢,請讓我知道。

謝謝!

+3

感謝您的建議!這是行得通的,但我想分享的視頻自PHAsset以來已經存在於照片庫中。我不想創建另一個副本。我可以暫時在本地保存PHAsset視頻(我如何解決其他幾個相關共享問題)或使用其數據。但是據我所知,沒有一種方法可以將PHAsset與ALAsset連接起來。無法使用Facebook SDK 4.0 FBSDKShareDialog共享PhotoKit視頻? – Fabe 2015-04-04 09:50:22

+0

這是生成的新網址! 'assets-library://asset/asset.mp4?id = E121FF88-B0AB-4EE9-BD60-E676617BDC54&ext = mp4' – jose920405 2015-11-20 22:18:15

+0

可以在不顯示任何模式的情況下執行此操作,並將描述和標題添加到視頻中? – jose920405 2015-12-02 13:41:28

0

請檢查:1)視頻尺寸小於12MB。 2)分享的人應該安裝Facebook for iOS客戶端,版本爲26.0或更高。

您應該使用以下行:

NSURL *movieUrl = [info objectForKey:UIImagePickerControllerReferenceURL]; 

,而不是

NSURL *movieUrl = [info objectForKey:UIImagePickerControllerMediaURL]; 
相關問題