2015-04-01 11 views
5

zauważyłem NSData można udostępnić film na facebook posłaniec prosto:Jak udostępnić NSData lub phasset wideo używając Facebook iOS SDK 4.0 FBSDKShareDialog

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

ale mam trudności robi to samo, jeśli dzielą DO NAS paszy przy użyciu lokalnego pliku wideo lub zestawu faz.

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

com.facebook.sdk: FBSDKErrorDeveloperMessageKey = Tylko adresy URL plików atutem są dozwolone na rodzimy dialogowe

Jak bym go o konieczności podobny ładny app przełączania zachowanie używając phasset wideo?

Dzięki!

Odpowiedz

12

Wraz z nowym pakietem SDK 4.0 w serwisie Facebook filmy muszą być przesyłane jako adresy URL zasobów. Musisz skopiować lokalną ścieżkę wideo do Biblioteki zasobów i użyć wygenerowanego adresu URL do udostępnienia na Facebooku.

Krok 1:

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

Krok 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]; 
    } 
} 

Krok 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]; 

Jeśli masz inne zapytania proszę dać mi znać.

Dzięki!

+3

Dziękujemy za sugestię! To zadziała, ale wideo, które chciałbym udostępnić, już istnieje w bibliotece zdjęć, ponieważ jest to zestaw PHA. Nie chciałbym tworzyć kolejnej kopii. Mogę tymczasowo tymczasowo zapisać wideo PHAsetset (jak rozwiązałem kilka innych powiązanych problemów związanych z udostępnianiem) lub użyć jego danych. Ale tak naprawdę nie ma sposobu, aby połączyć MOŻLIWOŚĆ z PHAsset do ALAsset? Nie ma sposobu na udostępnianie filmów z PhotoKit przy użyciu Facebook SDK 4.0 FBSDKShareDialog? – Fabe

+0

To jest nowy wygenerowany URL !! 'assets-library: //asset/asset.mp4? id = E121FF88-B0AB-4EE9-BD60-E676617BDC54 & ext = mp4' – jose920405

+0

Można to zrobić poniżej, nie pokazując żadnego modalu i umieszczając opis i tytuł filmu wideo? – jose920405

0

Proszę sprawdzić: 1) Filmy muszą mieć mniej niż 12 MB. 2) Osoby, które współużytkują, powinny mieć zainstalowany Facebook na potrzeby klienta iOS, wersja 26.0 lub nowsza.

należy użyć poniższy wiersz:

NSURL *movieUrl = [info objectForKey:UIImagePickerControllerReferenceURL]; 

zamiast

NSURL *movieUrl = [info objectForKey:UIImagePickerControllerMediaURL];