如何确定用户之前是否已订阅-RevenueCat

时间:2019-07-03 00:00:23

标签: ios swift in-app-purchase auto-renewable revenuecat

我希望能够确定用户是否曾经订阅过 能够更改购买按钮的名称。换句话说,在开始时,该按钮将显示Try It Now,如果该用户当前已订阅,则该按钮将显示Subscribed,但是如果该用户曾经被订阅,但该订阅已过期,我想显示{ {1}}上的购买按钮。

当前,除Renew选项外,其他所有东西都起作用。

Renew

检查用户之前是否已订阅的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以检查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,Web等)上解锁,因此iOS上的按钮实际上可能并未触发还原。