首页 > 解决方案 > 使用 RevenueCat 包装“purchaserInfo”以便在整个代码中轻松比较的最佳方法是什么

问题描述

什么是包装Purchases.shared.purchaserInfo以仅返回truefalseIf语句中进行多重比较时的最佳方式。

我想要做的是通过返回 true 或 false 的方法或属性来快速检查用户是否可以访问 PRO 功能,因为我需要在 if 语句中进行多次检查,比如......if userHasAccess && someOtherCheck { // do something}

这是一个有效的解决方案吗?

单例类:

    class IAPHelper {

        static let shared = IAPHelper()

        func hasAccessToProFeatures()->Bool{
            var hasAccess:Bool?
            Purchases.shared.purchaserInfo { (purchaserInfo, error) in
                if let purchaserInfo = purchaserInfo {
                    if purchaserInfo.activeEntitlements.contains("myEntitlement") {
                        hasAccess = true
                    }else{
                        hasAccess = false
                    }
                }
            }
            return hasAccess!
        }
    }

用法:

    if IAPHelper.shared.hasAccessToProFeatures() && someOtherCheck{
        // unlock PRO features
    }

标签: swiftin-app-purchaserevenuecat

解决方案


共享实例还不错,但是对于这么小的类,您可以hasAccessToProFeatures改为声明为静态变量。

class IAPHelper {

static var hasAccessToProFeatures: Bool {

    var hasAccess:Bool?
    Purchases.shared.purchaserInfo { (purchaserInfo, error) in
        if let purchaserInfo = purchaserInfo {
            if purchaserInfo.activeEntitlements.contains("myEntitlement") {
                hasAccess = true
            }else{
                hasAccess = false
            }
        }
    }

    guard let isProMember = hasAccess else {
        return false
    }

    return isProMember

  }

}

然后你可以这样称呼它:

if IAPHelper.hasAccessToProFeatures && someOtherCheck {
    // unlock PRO features
}

推荐阅读