Когда я делюсь видео в Instagram из своего приложения, я не могу отследить статус публикации, чтобы активировать другую функцию.
Прошу помощи, пытаюсь реализовать функцию публикации видео из своего приложения на другие платформы, для пополнения внутреннего баланса Проблема с рейл инстаграм: После успешной публикации контроллер активности переходит в стартовое состояние и мой приложение не знает, что рельс опубликован, из-за этого за данный тип публикации монеты не начисляются, так как не работает метод завершенияWithItemsHandler
вот моя функция общего доступа:
@objc func shareData(sender: UIButton){
self.shareVideoForIndex(index: sender.tag)
}
func shareVideoForIndex(index : Int){
let videoData = videoSearchData[index]
let fileID = videoData.video_ID
let videoURL = URL.videoMixesDir.appendingPathComponent(videoData.video_URL)
let isAlreadyShared = videoData.isAlreadyPostOnSocial
let shareAll: [URL] = [videoURL]
let arrayOfItem = shareAll.map { url in
ShareItem(url: url , title: "")
}
let activityViewController = UIActivityViewController(activityItems: arrayOfItem, applicationActivities: nil)
activityViewController.setValue("Video", forKey: "subject")
activityViewController.completionWithItemsHandler = {
activityType, completed, returnedItems, error in
if completed && (error == nil) {
Analytics.logEvent("did_tap_share_button", parameters: ["type": activityType?.rawValue as Any])
if activityType == UIActivity.ActivityType.postToFacebook ||
activityType == UIActivity.ActivityType.postToTwitter ||
activityType == UIActivity.ActivityType("com.burbn.instagram.shareextension") ||
activityType == UIActivity.ActivityType("com.burbn.youtube.shareextension") {
if activityType == UIActivity.ActivityType("com.burbn.instagram.shareextension"){
let asset = AVAsset(url: videoURL)
let duration = asset.duration.seconds
if !(duration < 60){
return
}
}
if !isAlreadyShared {
let totalCoin = self.keyChain.get(CoinsStoreController.coinsKey) ?? ""
var IntCoin = Int(totalCoin) ?? CoinsStoreController.premiumMixCost * 3
IntCoin = IntCoin + 25
self.keyChain.set("\(IntCoin)", forKey: CoinsStoreController.coinsKey, withAccess: .none)
DataBaseVideoRecord.shareInstance.updateVideoDataForSharedStatus(
videoID: fileID,
sharedStatus: true
)
DispatchQueue.main.async {
let alertController = UIAlertController(
title: "",
message: "You just earned 25 bonus coins!",
preferredStyle: .alert
)
self.navigationController?.present(alertController, animated: true) {
DispatchQueue.main.asyncAfter(deadline: .now() + 6.0) {
alertController.dismiss(animated: true, completion: nil)
}
}
}
}
}
}
}
activityViewController.popoverPresentationController?.sourceView = self.view
self.present(activityViewController, animated: true, completion: nil)
}
Обычный пост, смс или сторис сам по себе закрывает контроллер активности и все работает, но не катится. Я обнаружил, что при успешной железнодорожной проводке значение Completed возвращается false