嗨,我本周已经将我的应用程序改编为iOs11,从昨天到今天,尝试将分享视频重新设置为iOs 11中的facebook按钮,但没有成功。我已经尝试了所有东西,谷歌搜索,尝试了stackOverflow中的所有内容,但我坚持这一点。 关键是一切都停止工作,因为我改变了保存视频的方式。我正在使用ALAsset并更改为PHAsset。 我不知道这是否是原因,但让Facebook提示分享我的视频是不可能的。我已经尝试了我在这里看到的每一段代码。 我的视频网址为" file:///var/mobile/Media/DCIM/100APPLE/IMG_0233.MP4"除了文件名,我觉得一切都还好。我的应用程序检查用户是否已登录,以及是否具有“是”的发布权限。然后它配置提示,以显示它。但总是以委托的错误方法结束:
/**
Sent to the delegate when the sharer encounters an error.
- Parameter sharer: The FBSDKSharing that completed.
- Parameter error: The error.
*/
func sharer(_ sharer: FBSDKSharing!, didFailWithError error: Error!) {
print(error.localizedDescription)
}
这是错误:
The operation couldn’t be completed. (com.facebook.sdk.share error 2.)
这是我的代码。我不知道会发生什么,除了来自phAsset的已保存视频与facebook不兼容,我怀疑。但也许这里的人比我更了解这个并且可以提供帮助。
非常感谢提前!
这里是按下facebook按钮后运行的代码:
//save video with PHAsset
self.avHandler.saveWithPHAsset { (void) -> () in
//get url of the video
guard let urlToShare = self.avHandler.self.mergedLocalAssetVideoURL else {
return
}
if FBSDKAccessToken.current() != nil
{
if FBSDKAccessToken.current().hasGranted("publish_actions")
{
print("permission granted")
let video = FBSDKShareVideo(videoURL: urlToShare)
let dialog = FBSDKShareDialog()
DispatchQueue.main.async{
if UIApplication.shared.canOpenURL(URL.init(string: "fbauth2://")!)
{
dialog.mode = FBSDKShareDialogMode.native
}
else{
dialog.mode = FBSDKShareDialogMode.browser
}
}
let content : FBSDKShareVideoContent = FBSDKShareVideoContent()
// content.contentURL = NSURL.init(string: urlToShare.absoluteString) as! URL
let image = UIImage(data: self.recordingInfo.thumbData)
let fbimage = FBSDKSharePhoto(image: image, userGenerated: false)
content.previewPhoto = fbimage!
content.video = video!
content.contentURL = urlToShare
dialog.delegate = self
dialog.shareContent = content
dialog.fromViewController = self
// FBSDKShareDialog.show(from: self, with: content, delegate: self)
dialog.show()
}
else
{
print("don't have permission")
}
}
else
{
"Please login to facebook in the tab menu".displayInfo()
}
}