iOS IAP Restore требуется несколько попыток - PullRequest
1 голос
/ 24 марта 2020

Я сталкиваюсь с очень неловким поведением покупок приложений в моем приложении. Приложение представляет собой веб-просмотр, поэтому я создал веб-просмотр и загрузил свои локальные HTML файлы.

Со времени моего последнего обновления IAP Restore теперь требуется несколько попыток, пока он, наконец, не восстановит указанный c продукт. У меня есть 3 продукта, и я заметил, что моему первому IAP требуется 1-2 попытки, пока он не восстановится, а остальные 2 - только после попытки восстановления 3-4-5-6-7 раз.

Ничего не изменилось в восстановить код в последнем обновлении, и я не нашел нигде подсказки в других найденных вопросах.

И второй вопрос: если я купил все 3 продукта, следует ли восстановить один продукт, чтобы восстановить все из них?

ОБНОВЛЕНИЕ: Вот мой код

fun c restorePurchases () {

    NetworkActivityIndicatorManager.networkOperationStarted()
    SwiftyStoreKit.restorePurchases(atomically: true) { results in
        NetworkActivityIndicatorManager.networkOperationFinished()

        for purchase in results.restoredPurchases {
            let downloads = purchase.transaction.downloads
            if !downloads.isEmpty {
                SwiftyStoreKit.start(downloads)
            } else if purchase.needsFinishTransaction {
                // Deliver content from server, then:
                SwiftyStoreKit.finishTransaction(purchase.transaction)
            }
        }
        self.showAlert(self.alertForRestorePurchases(results))
    }
}

fun c alertForRestorePurchases (_ results: RestoreResults) -> UIAlertController {

    if results.restoreFailedPurchases.count > 0 {
        print("Restore Failed: \(results.restoreFailedPurchases)")
        return alertWithTitle("Restore succesful", message: "Everything was restored.")
    } else if results.restoredPurchases.count > 0 {
        print("Restore Success: \(results.restoredPurchases)")

        var isSuccess = false
        for i in 0 ..< results.restoredPurchases.count
        {
            let pId = results.restoredPurchases[0].productId
            if pId == self.currentProductId
            {
                isSuccess = true

                if(pId == appDelegate.pId1)
                {
                    UserDefaultManager.setPurchaseStatus(flag: true)
                    self.purchaseTimer.invalidate()
                }
                else if(pId == appDelegate.pId2)
                {
                    UserDefaultManager.setPicaPurchaseStatus(flag: true)
                    self.purchaseTimer.invalidate()
                }
                else if(pId == appDelegate.pId3)
                {
                    UserDefaultManager.setPicaRealPurchaseStatus(flag: true)
                    self.purchaseTimer.invalidate()
                }

                makeJsScriptCall()
                return alertWithTitle("Activated!", message: "Everything was restored!")
            }
        }

        if(!isSuccess)
        {
            return alertWithTitle("Something went wrong", message: "This is the error that I get until I try restore 3-4 times")
        }

fun c showPurchaseActionSheet () {let alert = UIAlertController (title : «Выберите опцию», сообщение: ноль, предпочитаемый стиль: .actionSheet)

    alert.addAction(UIAlertAction(title: "Purchase", style: .default , handler:{ (UIAlertAction)in
        self.purchase(.nonConsumablePurchase, atomically: true)
    }))

    alert.addAction(UIAlertAction(title: "Restore", style: .default , handler:{ (UIAlertAction)in
        self.restorePurchases()
    }))

    alert.addAction(UIAlertAction(title: "Dismiss", style: .cancel, handler:{ (UIAlertAction)in
    }))

    alert.popoverPresentationController?.sourceView = self.view
    self.present(alert, animated: true, completion: {
        print("completion block")
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...