0

Facebook 共享需要如下 ALAsset:

let content = FBSDKShareVideoContent()

//The videos must be less than 12MB in size.

let bundle = NSBundle.mainBundle()
let path = bundle.URLForResource("a", withExtension: "mp4")

let video = FBSDKShareVideo()
// doesn't work; needs to be an "asset url" (ALAsset)
//video.videoURL = path

content.video = video

let dialog = FBSDKShareDialog()
dialog.shareContent = content
dialog.show()

如何获取本地捆绑文档或 NSData 对象,并将其转换为 ALAsset?

(我最初的想法是将视频保存到本地相册,然后加载列表并选择它,但这是不必要的界面步骤)

4

1 回答 1

1

ALAsset的文档指出

ALAsset 对象表示由 Photo 应用程序管理的照片或视频。

所以我很确定您必须先将视频写入相机胶卷,然后才能将其用作ALAsset。但是,您无需打开相机胶卷并让用户选择资产即可使用它。使用写入ALAssetLibrary

library.writeVideoAtPathToSavedPhotosAlbum(movieURL, completionBlock: { (newURL, error) -> Void

您在该newUrl完成块变量中获得资产 url 。在 Facebook 共享通话中使用它

let content = FBSDKShareVideoContent()
content.video = FBSDKShareVideo(videoURL: newURL)

FBSDKShareAPI.shareWithContent(content, delegate: self)
NSLog("Facebook content shared \(content.video.videoURL)")

如果您愿意,您可以在完成块内进行此共享,或者您可以从完成块中保存 newUrl 并在其他地方使用它。

于 2015-12-01T18:03:12.870 回答