Прерывание оператора For и разрешение обработчику завершения успешно завершиться - PullRequest
0 голосов
/ 04 августа 2020

У меня есть реализация RevenueCat, которая работает, но мне не нравится поток, и я изо всех сил пытаюсь его улучшить. Я знаю, что должен быть более изощренный способ сделать это, поэтому любая помощь приветствуется: *

1 Ответ

1 голос
/ 04 августа 2020

Первый ежемесячный пакет, вероятно, лучше, чем за l oop, так как вы не хотите, чтобы когда-либо инициировали два звонка на покупку одним нажатием кнопки.

@IBAction func btnMnthlyPressed(_ sender: Any) {
    Purchases.shared.offerings { (offerings, error) in
        if let e = error {
            print(e.localizedDescription)
        }
        
        guard let offering = offerings?.current else {
            print("No current offering configured")
            return
        }
        
        guard let package = offering.availablePackages.first(where: { $0.packageType == .monthly }) else {
            print("No monthly package type")
            return
        }
        
        Purchases.shared.purchasePackage(package) { (transaction, info, error, cancelled) in
            if cancelled {
                print("User cancelled purchase")
                return
            }
            // Optionally handle specific purchase errors
             if info?.entitlements.all["FullAccess"]?.isActive == true {
                print("Unlocked Pro Cats ?")
            }
        }
    }
}

Тем не менее, вы можете хотите получить все пакеты при загрузке представления, чтобы убедиться, что они существуют, прежде чем пользователь попытается нажать кнопку покупки.

...