美文网首页
iOS app内直接分享视频卡片到微信

iOS app内直接分享视频卡片到微信

作者: 大成小栈 | 来源:发表于2024-02-29 15:41 被阅读0次

    如果你想在自己的app里通过系统分享弹窗直接分享视频到微信,并且是以卡片消息的形式,那么下面的两个接口可能会对你有所帮助!

    实现这个需求:

    1. 首先需要将视频保存到系统相册,获取相册内的该资源URL;
    2. 这个相册资源URL与新版的系统接口返回的URL格式不同;
    3. 调用系统的UIActivityViewController,即可;

    说明:

    1. 新的iOS版本,已经弃用了这种老的分享方式;
    2. 除了微信,其他app对这种老的分享方式支持的并不好;
    3. 通过ALAssetsLibrary的保存,没有返回资源的localId,在参数上对其他sdk不兼容。
    + (void)saveShareVideoToAlbum:(NSURL *)fileUrl completion:(void(^)(BOOL isSucceeded, NSURL *assetURL))completion {
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wdeprecated-declarations"
        ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
        [library writeVideoAtPathToSavedPhotosAlbum:fileUrl completionBlock:^(NSURL *assetURL, NSError *error) {
            BOOL isSuccessed = error == nil && assetURL != nil;
            completion(isSuccessed , assetURL);
        }];
    #pragma clang diagnostic pop
    }
    
    + (void)checkAssetExists:(NSURL *)assetURL completion:(void(^)(BOOL isExist))completion {
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wdeprecated-declarations"
        ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
        [library assetForURL:assetURL resultBlock:^(ALAsset *asset) {
            BOOL isExist = asset != nil;
            completion(isExist);
        } failureBlock:^(NSError *error) {
            NSLog(@"checkAssetExists error: %@", error.localizedDescription);
            completion(NO);
        }];
    #pragma clang diagnostic pop
    }
    

    相册资源URL:asserts-library://.....
    新版的系统接口返回的URL格式:file://.....
    而,这两种url作为参数,传至UIActivityViewController之后,展示形式和效果都不一样,

    所以,这种方式也仅限于分享到微信使用,挖擦!

    参考链接:
    https://www.jianshu.com/p/9088e634e7aa

    相关文章

      网友评论

          本文标题:iOS app内直接分享视频卡片到微信

          本文链接:https://www.haomeiwen.com/subject/dyjqzdtx.html