使用swift SDK将视频发布到Facebook

Jea*_*rre 6 facebook swift4

我一整天和昨天晚上都想弄清楚这一点,但没有运气.我可以确认LinkShareContent可以工作,但是当我尝试共享视频文件时.它给了我一个错误代码"保留"但没有别的.

这是链接的代码

var content = LinkShareContent(url: URL(string: "https://google.com")!)
showShareDialog(content)
Run Code Online (Sandbox Code Playgroud)

这是视频的代码根本不起作用.

 let video = Video(url: url)
 var content = VideoShareContent(video: video, previewPhoto: Photo(image: inProgressItem.firstImage, userGenerated: true))
 showShareDialog(content)
Run Code Online (Sandbox Code Playgroud)

这将显示控制器上的共享表

  Func showShareDialog<C: ContentProtocol>(_ content: C, mode: ShareDialogMode = .shareSheet) {
        let dialog = ShareDialog(content: content)
        dialog.presentingViewController = self
        dialog.mode = mode

        do{
            try dialog.show()
        }
        catch (let error){
            print(error)
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已经确认视频是在本地路径上,我正在iPhone 8 11.1.2上测试应用程序

Tun*_*Fam 3

有完全相同的问题。它适用于LinkShareContent但不适用于VideoShareContent

解决方案:确保您获得了正确的URL视频。右边是来自委托方法的字典"UIImagePickerControllerReferenceURL"中键的 URL 。infoUIImagePickerController

工作代码:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {
    picker.dismiss(animated: true)
    if let videoURL = info["UIImagePickerControllerReferenceURL"] as? URL {
        let video = Video(url: videoURL)
        let content = VideoShareContent(video: video)
        let dialog = ShareDialog(content: content)
        dialog.failsOnInvalidData = true
        dialog.mode = .native
        dialog.presentingViewController = self
        do {
            try dialog.show()
        } catch {
           print(error)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

额外信息:最初我没有使用这个键“UIImagePickerControllerReferenceURL”,因为它已被弃用。Apple 建议使用 UIImagePickerControllerPHAsset 代替。但来自那里的 URL 也会返回reserved错误。另一种尝试是使用键“UIImagePickerControllerMediaURL”,但也没有成功。