Делимся видео на ios используя fb sdk
Я очень новичок в программировании на iOS и, следовательно, вопрос может показаться довольно глупым, но я действительно не знаю, что не так.
Итак, я следил за обменом в iOS на https://developers.facebook.com/docs/sharing/ios и мне удалось поделиться ссылкой и фотографией. Но я понятия не имею, почему я не могу поделиться видео. Я не пользуюсь UIImagePickerControllerReferenceURL
но вместо этого я использую [[NSBundle mainBundle] URLForResource:@"xyz" withExtension:@"mp4"]
для videoURL.
Это причина, почему кнопка обмена не работает?
Моя цель - позволить пользователям обмениваться контентом из приложения напрямую. Поэтому я не хочу их использовать UIImagePickerControllerReferenceURL
,
Вот код:
NSURL* videoURL = [[NSBundle mainBundle] URLForResource:@"xyz" withExtension:@"mp4"];
FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init];
video.videoURL = videoURL;
FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init];
content.video = video;
FBSDKShareButton *button = [[FBSDKShareButton alloc] init];
button.center = self.view.center;
button.shareContent = content;
[self.view addSubview:button];
И файл xyz.mp4 находится в папке Media.
1 ответ
NSURL* videoURL = [[NSBundle mainBundle] URLForResource:@"xyz" withExtension:@"mp4"];
заменить этим
NSURL* videoURL = [[NSBundle mainBundle] URLForResource:@"xyz" ofType:@"mp4"];
[self saveToPhotoAlbum:videoURL];
После этого сохраните это видео в библиотеку фотографий, так как в Facebook требуется URL-адрес библиотеки ресурсов.
-(void)saveToPhotoAlbum:(NSURL*)url
{
NSLog(@"srcURL: %@", url);
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:url])
{
[library writeVideoAtPathToSavedPhotosAlbum:url
completionBlock:videoWriteCompletionBlock];
}
}
затем
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];