Когда я делюсь видео в 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

0 ответов

Другие вопросы по тегам