Как определить, был ли пользователь подписан ранее - RevenueCat - PullRequest
1 голос
/ 03 июля 2019

Я хотел бы иметь возможность определить, был ли пользователь когда-либо подписан на возможность изменить имя кнопки покупки.Другими словами, при запуске кнопка скажет, Try It Now, если пользователь в настоящий момент подписан, кнопка скажет Subscribed, но если пользователь имел обыкновение подписываться, но срок действия подписки истек, я хочу отобразить Renew накнопка покупки.

В настоящее время все работает, кроме опции Renew.

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    Purchases.shared.purchaserInfo { (purchaserInfo, error) in
        self.configurePurchases(purchaserInfo: purchaserInfo)
    }
}

func configurePurchases(purchaserInfo: PurchaserInfo?) {
    if let purchaserInfo = purchaserInfo {
        if purchaserInfo.activeEntitlements.contains("myKillerFeatureEntitlement") {
            myButton.setTitle("Subscribed",for: .normal)
            labelAutoTaxDescription.text = "You are currently subscribed. Thank you for your support."

            let dateFormatter = DateFormatter()
            dateFormatter.dateStyle = .medium
            dateFormatter.timeStyle = .medium

            if let expirationDate = purchaserInfo.expirationDate(forEntitlement: "myKillerFeatureEntitlement") {
                self.labelAutoTaxDetectionPrice.text = "Expiration Date: \(dateFormatter.string(from: expirationDate))"
            }
        }
    }

    // Here is where I need check if it's a returning user so I can change the name of the button
    if isReturningUser{

        myButton.setTitle("Renew",for: .normal)

        // other code
    }
}

Как лучше всего проверить, подписан ли пользователь ранее?

1 Ответ

1 голос
/ 03 июля 2019

Вы можете проверить allPurchasedProductIdentifiers NSSet<NSString *> на объекте RCPurchaserInfo, чтобы увидеть все идентификаторы продукта, приобретенные пользователем, независимо от срока годности.

В качестве альтернативы, если вы хотите проверить на наличие права "myKillerFeatureEntitlement" , вы можете проверить свойство purchaseDateForEntitlement. Если activeEntitlements равен нулю и есть дата покупки, вы можете предположить, что она была приобретена ранее, а срок ее действия истек.

func configurePurchases(purchaserInfo: PurchaserInfo?) {
    if let purchaserInfo = purchaserInfo {
        if purchaserInfo.activeEntitlements.contains("myKillerFeatureEntitlement") {
            myButton.setTitle("Subscribed",for: .normal)
            labelAutoTaxDescription.text = "You are currently subscribed. Thank you for your support."

            let dateFormatter = DateFormatter()
            dateFormatter.dateStyle = .medium
            dateFormatter.timeStyle = .medium

            if let expirationDate = purchaserInfo.expirationDate(forEntitlement: "myKillerFeatureEntitlement") {
                self.labelAutoTaxDetectionPrice.text = "Expiration Date: \(dateFormatter.string(from: expirationDate))"
            }

        // Here is where I need check if it's a returning user so I can change the name of the button
        } else if purchaserInfo.purchaseDate(forEntitlement: "myKillerFeatureEntitlement") != nil {

                myButton.setTitle("Renew",for: .normal)

                // other code
            }
        }
    }
}

Обратите внимание, что разрешение могло быть разблокировано на другой платформе (Android, в Интернете и т. Д.), Поэтому кнопка на iOS может фактически не вызывать восстановление.

...