Cómo compartir video NSData o phasset usando Facebook iOS SDK 4.0 FBSDKShareDialog

Me di count de que puedes compartir video de NSData a Facebook Messenger simplemente:

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

Pero tengo dificultades para hacer lo mismo cuando comparta el feed de Facebook usando el file de video local o 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 = Solo se permiten URL de file de activos para el cuadro de dialog nativo

¿Cómo me gustaría tener un buen comportamiento de cambio de aplicaciones similar usando video phasset?

¡Gracias!

Con el nuevo Facebook SDK 4.0, los videos se deben pasar como URL de activos. Debe copyr su ruta de video local a la Biblioteca de resources y usar esa URL generada para compartir en Facebook.

Paso 1:

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

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

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

Si tiene alguna otra consulta, hágamelo saber.

¡Gracias!

Compruebe: 1) Los videos deben tener un tamaño inferior a 12 MB. 2) Las personas que comparten deben tener Facebook para el cliente iOS instalado, versión 26.0 o superior.

Debe usar la siguiente línea:

 NSURL *movieUrl = [info objectForKey:UIImagePickerControllerReferenceURL]; 

en lugar de

 NSURL *movieUrl = [info objectForKey:UIImagePickerControllerMediaURL];