Делимся видео на 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];
Другие вопросы по тегам