Coder Social home page Coder Social logo

Comments (1)

pepperchili avatar pepperchili commented on May 4, 2024

We've attempted to use the Photos framework to obtain a PHAsset and it works. However, it requires manually creating the user interface, which is not our preference.

PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.predicate = [NSPredicate predicateWithFormat:@"mediaType = %d", PHAssetMediaTypeVideo];
PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsWithOptions:options];
[assetsFetchResult enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    PHAsset *asset = (PHAsset *)obj;
}];

We prefer to use PHPickerViewController. Unfortunately, it doesn't seem to work as expected. Instead of receiving a PHAsset type, we only obtained a file URL. The same error as mentioned below occurred: "FBSDKErrorDeveloperMessageKey=Must refer to an asset file".

PHPickerConfiguration *configuration = [[PHPickerConfiguration alloc] initWithPhotoLibrary:[PHPhotoLibrary sharedPhotoLibrary]];
configuration.selectionLimit = 1;
configuration.filter = [PHPickerFilter videosFilter];
PHPickerViewController *picker = [[PHPickerViewController alloc] initWithConfiguration:configuration];
if (@available(iOS 14, *)) {
    picker.delegate = self;
} else {
    // Fallback on earlier versions
}
[self presentViewController:picker animated:YES completion:nil];

//delegate
- (void)picker:(PHPickerViewController *)picker didFinishPicking:(NSArray<PHPickerResult *> *)results {
    [picker dismissViewControllerAnimated:YES completion:nil];

    for (PHPickerResult *result in results) {
        if (@available(iOS 14, *)) {
            NSItemProvider *itemProvider = result.itemProvider;
            NSString *assetIdentifier = result.assetIdentifier;
            [itemProvider loadFileRepresentationForTypeIdentifier:@"public.movie" completionHandler:^(NSURL * _Nullable url, NSError * _Nullable error) {
                NSLog(@"Selected video URL: %@", url);
                dispatch_async(dispatch_get_main_queue(), ^{
                    FBSDKShareVideo *vedio = [[FBSDKShareVideo alloc] initWithVideoURL:url previewPhoto:nil];
                    FBSDKShareVideoContent *vc = [[FBSDKShareVideoContent alloc] init];
                    vc.video = vedio;
                    
                    FBSDKShareDialog *dialog = [FBSDKShareDialog dialogWithViewController:self withContent:vc delegate:self];
                    dialog.mode = FBSDKShareDialogModeNative;
                    [dialog show];
                });
     
            }];
        } else {
            // Fallback on earlier versions
        }
    }
}

from facebook-ios-sdk.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.