Я реализую In App purchases
, которые работают довольно хорошо. Я использую подписки Auto-Renewable
и Non-renewable
. Я могу определить, когда любая из подписок активна и срок ее действия истек. Я могу обновить пользовательский интерфейс профиля в соответствии со статусом подписки, но могу сделать это только при проверке по одному за раз.
Если я позвоню обоим functions
, когда представление должно появиться. Пользовательский интерфейс испорчен и не отображает правильный статус. Я отладил и увидел, что если первый проверяет одну подписку, обновляет ее статус, когда я выхожу из view
и возвращаюсь, он проверяет, что другой возвращается к статусу по умолчанию, который равен standard account
, поскольку Auto-renewable
истек , Есть ли способ запустить обе функции одновременно, а также использовать их для обновления моего интерфейса одновременно. Ниже мой код.
var isUserActive: Bool?
var user: User {
return AppDelegate.shared.user
}
func setUserAccountType() {
if self.isUserActive == nil {
self.userAccountType.text = ""
self.userGoGold.isHidden = true
} else {
if self.isUserActive! {
self.userAccountType.text = "Gold Account"
} else {
self.userAccountType.text = "Standard Account"
self.userGoGold.isHidden = false
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.setUserAccountType()
IAPManager.shared.getProducts()
}
override func viewWillAppear(_ pAnimated: Bool) {
super.viewWillAppear(pAnimated)
self.checkForAutoRenewableSubscription()
self.checkForNonRenewableSubscription()
}
func setUpUserAccountStatus(_ pIsActive: Bool) {
DispatchQueue.main.async {
self.isUserActive = pIsActive
self.setUserAccountType()
self.reloadRowForIdentifier(.billing)
self.activityIndicator.hidesWhenStopped = true
self.activityIndicator.stopAnimating()
}
}
func checkForAutoRenewableSubscription() {
self.activityIndicator.startAnimating()
self.user.checkIfSubscriptionIsActive { (pIsActive) in
self.setUpUserAccountStatus(pIsActive)
}
}
func checkForNonRenewableSubscription() {
self.activityIndicator.startAnimating()
self.user.checkifNonRenewableSubscriptionIsActive { (pSubscribed) in
self.setUpUserAccountStatus(pSubscribed)
}
}