How to share NSData or phasset video using Facebook iOS SDK 4.0 FBSDKShareDialog

前端 未结 2 1923
心在旅途
心在旅途 2020-12-03 13:18

I noticed you can share NSData video to facebook messenger simply:

NSData *videoData = [NSData dataWithContentsOfURL:localVideoUrl];
[FBSDKMessengerSharer sh         


        
相关标签:
2条回答
  • 2020-12-03 13:41

    Please check: 1)The videos must be less than 12MB in size. 2)People who share should have Facebook for iOS client installed, version 26.0 or higher.

    You should use the below line:

    NSURL *movieUrl = [info objectForKey:UIImagePickerControllerReferenceURL];
    

    instead of

    NSURL *movieUrl = [info objectForKey:UIImagePickerControllerMediaURL];
    
    0 讨论(0)
  • 2020-12-03 13:44

    With the new Facebook SDK 4.0, videos must be passed as assets URL. You have to copy your local video path to Assets Library and use that generated URL to share on Facebook.

    Step 1:

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

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

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

    If you have any other query please let me know.

    Thanks!

    0 讨论(0)
提交回复
热议问题