Как обнаружить и выполнить код, когда кнопка «Купить» нажата в разделе «Покупки внутри приложения» - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу отобразить activityIndicator, когда пользователь нажимает кнопку покупки iTunes, чтобы наконец купить подписку.Обработка покупки занимает немного времени, и как только она будет завершена, я хочу очистить activityIndicator.

Я пробовал разные решения с одним из них, используя applicationWillResignActive, чтобы обнаружить всплывающее окно iTunes, и это обнаруживается там, где пользователю предлагается ввести пароль.Я также разместил уведомление, когда продукты запрашиваются, но все еще то же самоеЕсть ли способ узнать, когда нажата кнопка покупки iTunes.Ниже мой код.

extension Notification.Name {
    public static let AppDelegatePurchasesIsProccessing = NSNotification.Name("AppDelegatePurchasesIsProccessing")
}

func applicationWillResignActive(_ application: UIApplication) {
        NotificationCenter.default.post(name: .AppDelegatePurchasesIsProccessing, object: self)
      }
}

Оверлей, отображаемый для совершения покупок

override func viewWillAppear(_ animated: Bool) {
      super.viewWillAppear(animated)
      self.notifyForUserIsPurchasingProduct {
          self.activityIndicator.startAnimating()
     }
 }

override func viewWillDisappear(_ animated: Bool) {
      super.viewWillDisappear(animated)
      self.notifyForUserHasPurchasedProduct {
          self.activityIndicator.stopAnimating()
          self.dismiss(animated: true)
     }
}
func notifyForUserHasPurchasedProduct(_ action: @escaping () -> Void) {
     NotificationCenter.default.addObserver(forName: .AppDelegateUserHasPurchasedProductNotification, object: nil, queue: nil) { (_) in
          action()
    }
}

func notifyForUserIsPurchasingProduct(_ action: @escaping () -> Void) {
      NotificationCenter.default.addObserver(forName: .AppDelegatePurchasesIsProccessing, object: nil, queue: nil) { (_) in
          action()
     }
}

...