При обмене фотографиями я могу переключить свое приложение на Facebook, чтобы поделиться этим изображением.Похоже, что с видео это не так.
Это фото отлично поделится.Он перемещается в приложение Facebook, чтобы подтвердить сообщение:
let sharePhoto = FBSDKSharePhoto()
sharePhoto.image = photo
let content = FBSDKSharePhotoContent()
content.photos = [sharePhoto]
let shareDialog: FBSDKShareDialog = FBSDKShareDialog()
shareDialog.shareContent = content
shareDialog.mode = .native
shareDialog.show()
Точно так же я не могу сделать это при обмене видео!Нет диалогового окна, не переключается на приложение Facebook и не публикует видео:
let shareVdo: FBSDKShareVideo = FBSDKShareVideo()
shareVdo.videoURL = self.fileURL
let vdoContent = FBSDKShareVideoContent()
vdoContent.video = shareVdo
let shareDialog: FBSDKShareDialog = FBSDKShareDialog()
shareDialog.shareContent = vdoContent
shareDialog.mode = .native
shareDialog.show()
Это позволит поделиться моим видео, но сразу без диалогов или перехода в приложение Facebook первым!
let shareVdo: FBSDKShareVideo = FBSDKShareVideo()
shareVdo.videoURL = self.fileURL
let vdoContent = FBSDKShareVideoContent()
vdoContent.video = shareVdo
FBSDKShareAPI.share(with: vdoContent, delegate:self)
В соответствии с документацией, возможно, мне понадобилось преобразовать мой fileURL в URL ресурса.Мне неясно, должен ли я использовать FBSDKShareAPI или нет:
let shareVdo: FBSDKShareVideo = FBSDKShareVideo()
let asset = AVAsset(url: self.fileURL)
let assetURL = self.getAssetUrl(asset:asset)
shareVdo.videoURL = assetURL
let vdoContent = FBSDKShareVideoContent()
vdoContent.video = shareVdo
//FBSDKShareAPI.share(with: vdoContent, delegate:self)
let shareDialog: FBSDKShareDialog = FBSDKShareDialog()
shareDialog.shareContent = vdoContent
shareDialog.mode = .native
shareDialog.show()
Если я раскомментирую вызов функции FBSDKShareAPI.share, я увижу «Состояние чтения TIC», напечатанное на моей консоли, и в конечном итоге оно будет отправлено в Facebook, но делает это без показа родного общего ресурса.(В основном он незаметно делится на Facebook без визуальной обратной связи с пользователем).Я хочу, чтобы он переместился в приложение Facebook с контентом, который должен подтвердить пользователь, точно так же, как обмен фотографиями работает в моем приложении.
Еще одной попыткой было использование FBSDKShareVideo с аргументами инициализатора «videoURL» и «previewPhoto».Я удостоверился, что видео меньше 12 мегабайт (в моем случае это было 4,4 МБ), sharePhoto и fileURL оба были действительны.Диалоговое окно обмена не работает, то есть не переходит в родное приложение Facebook.Руководство разработчика Facebook показывает его с помощью imagePickerController, что может означать, что SDK требует видео, поступающего с вашей камеры.
let photo = self.uiImages[0]
let sharePhoto = FBSDKSharePhoto()
sharePhoto.image = photo
let filePath = self.fileURL
// get size of video in bytes
do {
var fileSize : UInt64
let attr = try FileManager.default.attributesOfItem(atPath: (filePath?.path)!)
fileSize = attr[FileAttributeKey.size] as! UInt64
print(fileSize)
} catch {
print("Error: \(error)")
}
let shareVideo = FBSDKShareVideo(videoURL: self.fileURL, previewPhoto: sharePhoto)
let content = FBSDKShareVideoContent()
content.video = shareVideo
let shareDialog: FBSDKShareDialog = FBSDKShareDialog()
shareDialog.shareContent = content
shareDialog.mode = .native
shareDialog.show()