Как определить, выполняется ли процесс покупок в приложении?

#ios #swift #in-app-purchase #ads #flags

#iOS #swift #покупка в приложении #реклама #флаги

Вопрос:

Возможно ли в Swift определить, что пользователь что-то покупает? Процесс обычно занимает около 15-20 секунд и показывает 3-4 разных предупреждения (предупреждение о вводе пароля для Apple ID, для подтверждения покупки, для получения информации об успешной покупке или нет и т. Д.).
Моя проблема заключается в показе рекламы (OpenAd) всякий раз, когда приложение собирается стать активным, так что это действительно плохой пользовательопыт просмотра рекламы при попытке купить премиум-аккаунт для удаления рекламы…
Это часть кода, в которой я их представляю (AppDelegate):

 func applicationDidBecomeActive(_ application: UIApplication) {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
        tryToPresentAd()
    }
  

И вот методы, которые выполняют представление (также написанные в AppDelegate):

 func tryToPresentAd() {
            let ad: GADAppOpenAd? = self.appOpenAd
            self.appOpenAd = nil
            
            if ad != nil {
                guard let rootController = self.window?.rootViewController else { return }
                ad?.present(fromRootViewController: rootController)
            } else {
                requestAppOpenAd()
            }
        }

func requestAppOpenAd() {
            self.appOpenAd = nil
            GADAppOpenAd.load(withAdUnitID: Bundle.getValue(forKey: "xyzID"), request: GADRequest(), orientation: .portrait) { (ad, error) in
                if error != nil {
                    debugPrint("Failed to load app open ad", error as Any)
                } else {
                    self.appOpenAd = ad
                }
            }
        }
  

Есть ли какой-либо способ обнаружить это? Может быть, например, установить какие-то флаги или что-то в этом роде, или, может быть, у Apple есть какой-то встроенный способ его обнаружения? Спасибо.

Ответ №1:

Возможно, вы могли бы попытаться создать bool, который будет превращаться в true всякий раз, когда пользователь решает что-то купить, и проверить, является ли этот bool false, чтобы tryToPresentAd() .