从我的 iOS 应用程序将视频分享到 Instagram

问题描述 投票:0回答:1

我看到很少有人触及这个主题,但我认为没有人提出 100% 有效的答案。

基本上,我希望能够将视频从我的 IOS 应用程序分享到 Instagram,而无需使用 UIActivityViewController。由于无法修改 UIActivityViewController 的 UI,因此我需要从头开始实现 Instagram 共享选项,即从我的应用程序调用 Instagram 应用程序。

我在 Stackoverflow 上发现,视频必须保存到图库中,然后才能通过 Insta 共享。这是我最终使用的代码:

func requestAuthorization(completion: @escaping () -> Void) {
        if PHPhotoLibrary.authorizationStatus() == .notDetermined {
            DispatchQueue.main.async {
                completion()
            }
        } else if PHPhotoLibrary.authorizationStatus() == .authorized {
            completion()
        }
    }
    
    func saveVideoToAlbum(_ outputURL: URL, _ completion: ((String, Error?) -> Void)?) {
        
        var localIdentifier: String = ""
        requestAuthorization {
            PHPhotoLibrary.shared().performChanges({
                let request = PHAssetCreationRequest.forAsset()
                localIdentifier = request.placeholderForCreatedAsset?.localIdentifier ?? ""
                request.addResource(with: .video, fileURL: outputURL, options: nil)
            }) { (result, error) in
                DispatchQueue.main.async { [weak self] in
                    
                    completion?(localIdentifier, error)
                }
            }
        }
    }
    
    func testInsta(_ videoUrl: URL) {
        
        saveVideoToAlbum(videoUrl) { localIdentifier, err in
            
            let u = "instagram://library?LocalIdentifier=" + localIdentifier
            let url = NSURL(string: u)!
            if UIApplication.shared.canOpenURL(url as URL) {
                UIApplication.shared.open(URL(string: u)!, options: [:], completionHandler: nil)
            } else {
                
                let urlStr = "https://itunes.apple.com/in/app/instagram/id389801252?mt=8"
                if #available(iOS 10.0, *) {
                    UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)
                    
                } else {
                    UIApplication.shared.openURL(URL(string: urlStr)!)
                }
            }
        }
    }

虽然这段代码没有在我的应用程序范围内打开这个漂亮的 UI(就像 UIActivityViewController 那样),但它仍然可以完成这项工作。它会打开 Instagram,其中包含我准备编辑的视频。但是,只有当 Insta 具有对我的图库的完全访问权限时,它才会打开我的视频。否则,它只会向我显示它可以访问的图库中的最后一个资产。

所以我的问题是 - 如何直接从我的应用程序将内容分享到 Instagram,无论 Instagram 是否具有对图库的完全访问权限?与 UIActivityViewController 的方式相同。

我 100% 可以做我想做的事,但我正在努力寻找合适的文档来解释如何实现我想要的。如果有人已经解决了这个挑战,请分享您的发现。预先感谢您!

ios swift video instagram share
1个回答
0
投票

我确信这也是可能的,我会考虑解决方法,以便将视频保存在照片以外的其他位置,例如文件应用程序。

我没有任何使用 Instagram 的经验,所以我不确定它是否可以从文件应用程序获取媒体。

请问为什么 UIActivityViewController 不在桌子上?

© www.soinside.com 2019 - 2024. All rights reserved.