Ios 从Bundle-Swift在Facebook上共享视频

Ios 从Bundle-Swift在Facebook上共享视频,ios,swift,xcode,Ios,Swift,Xcode,我想在facebook上分享一段视频,从捆绑包中取出。 我使用,但无法与ShareDialog共享视频 这是我的代码: class ViewController: UIViewController, LoginButtonDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate{ let bundlePath = Bundle.main.url(forResource: "fish3", withExte

我想在facebook上分享一段视频,从捆绑包中取出。 我使用,但无法与ShareDialog共享视频

这是我的代码:

class ViewController: UIViewController, LoginButtonDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate{

let bundlePath = Bundle.main.url(forResource: "fish3", withExtension: "mp4")?.path
@IBOutlet weak var loginView: UIView!
let actionCanc = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)

override func viewDidLoad() {
    super.viewDidLoad()

    //Login Button
    let loginButton = LoginButton(publishPermissions: [.publishActions])
    loginButton.delegate = self
    loginButton.center = loginView.center
    loginView.addSubview(loginButton)
}

//---------------------------------------
//MARK: Login via LoginButton
//---------------------------------------

func loginButtonDidCompleteLogin(_ loginButton: LoginButton, result: LoginResult) {
    print("Did complete login via LoginButton with result \(result)")
}

func loginButtonDidLogOut(_ loginButton: LoginButton) {
    print("Did logout via LoginButton")
}

//---------------------------------------
//MARK: Share Dialog
//---------------------------------------

func showShareDialog<C: ContentProtocol>(_ content: C, mode: ShareDialogMode){
    let shareDialog = ShareDialog(content: content)
    shareDialog.presentingViewController = self
    shareDialog.mode = mode
    do{
        try shareDialog.show()
    } catch(let error){
        let alertController = UIAlertController(title: "Invalid share content", message: "Failed to present share dialog with error \(error)", preferredStyle: .alert)
        alertController.addAction(actionCanc)
        present(alertController, animated: true, completion: nil)
    }
}


//---------------------------------------
//MARK: Video Content
//---------------------------------------


//Share from Bundle
@IBAction func shareVideoFromBundle() {

    let videoUrl = URL(fileURLWithPath: bundlePath!)

    let video = Video(url: videoUrl)

    print("FILE VIDEO")
    print(video)

    let content = VideoShareContent(video: video)
    showShareDialog(content, mode: .automatic)
}
类ViewController:UIViewController、loginbuttonelegate、UIImagePickerControllerDelegate、UINavigationControllerDelegate{
让bundlePath=Bundle.main.url(对于资源:“fish3”,扩展名为“mp4”)?.path
@IBVAR登录视图:UIView!
let actionCanc=UIAlertAction(标题:“取消”,样式:。取消,处理程序:nil)
重写func viewDidLoad(){
super.viewDidLoad()
//登录按钮
让loginButton=loginButton(publishPermissions:[.publishActions])
loginButton.delegate=self
loginButton.center=loginView.center
loginView.addSubview(登录按钮)
}
//---------------------------------------
//标记:通过登录按钮登录
//---------------------------------------
func loginButtonDidCompleteLogin(loginButton:loginButton,结果:LoginResult){
打印(“通过登录按钮完成登录,结果\(result)”)
}
func loginButtonDidLogOut(loginButton:loginButton){
打印(“通过登录按钮注销”)
}
//---------------------------------------
//标记:共享对话框
//---------------------------------------
func showShareDialog(uu内容:C,模式:ShareDialogMode){
让shareDialog=shareDialog(内容:content)
shareDialog.presentingViewController=self
shareDialog.mode=模式
做{
尝试shareDialog.show()
}捕捉(让错误){
让alertController=UIAlertController(标题:“无效共享内容”,消息:“无法显示共享对话框,错误\(错误)”,首选样式:。警报)
alertController.addAction(actionCanc)
存在(alertController,动画:真,完成:无)
}
}
//---------------------------------------
//标记:视频内容
//---------------------------------------
//从捆绑中分享
@iAction func shareVideoFromBundle(){
让videoUrl=URL(fileURLWithPath:bundlePath!)
让视频=视频(url:videoUrl)
打印(“文件视频”)
打印(视频)
让内容=视频共享内容(视频:视频)
showShareDialog(内容、模式:。自动)
}
}

当我尝试共享视频时,打印捕获中的错误:“无效共享内容”


有人能帮我吗?

通常,在尝试使用某个项目之前,最好将该项目从捆绑包复制到应用程序缓存目录

目标-C

NSURL * cacheDir = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]];  
Swift

let cacheDir = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).last!)

缓存目录是一个很好的放置可以在以后丢弃的东西的地方

通常,在尝试使用项目之前,最好将项目从捆绑包复制到应用缓存目录

目标-C

NSURL * cacheDir = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]];  
Swift

let cacheDir = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).last!)

缓存目录是一个很好的放置可以在以后丢弃的东西的地方

我从中找到了解决办法


我从中找到了解决办法


你能发布一个完全有效的例子吗?请阅读网站指南,你能发布一个完全有效的例子吗?请阅读网站指南,谢谢回复。我注意到,要共享视频,我需要一个类似“资产”的url-library://assets /“,但缓存使用的路径类似”file:///...'是否有转换路径的方法?这就是错误在您的“无法显示带有错误的共享对话框…”中告诉您的吗?信息<代码>'assets-library://库用于照片资产。意味着您需要使用
PhotoKit
框架。您尚未共享任何有用的代码,如
ShareDialog
的相关部分,谢谢您的回复。我注意到,要共享视频,我需要一个类似“资产”的url-library://assets /“,但缓存使用的路径类似”file:///...'是否有转换路径的方法?这就是错误在您的“无法显示带有错误的共享对话框…”中告诉您的吗?信息<代码>'assets-library://库用于照片资产。意味着您需要使用
PhotoKit
框架。您尚未共享任何有用的代码,如
ShareDialog