swift - 使用 RevenueCat 包装“purchaserInfo”以便在整个代码中轻松比较的最佳方法是什么
问题描述
什么是包装Purchases.shared.purchaserInfo
以仅返回true
或false
在If
语句中进行多重比较时的最佳方式。
我想要做的是通过返回 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
}
解决方案
共享实例还不错,但是对于这么小的类,您可以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
}
推荐阅读
- xamarin - 我在哪里可以定义我的风格,以便我可以进入所有标签页?
- angular7 - 发布请求状态 200 但数据库中没有数据
- python - 侦听器被可能的恶意数据包ping通。如何防止 IP 访问我的端口?
- c - 验证用户输入的“字符串”长度(C 语言)
- html - 连接
- 带有 formControlName 的标签,使用 Reactive Forms 的 FormBuilder
- makefile - 可以使 GNU Make 遵循规则中的符号链接吗
- python - 再培训或继续培训
- dart - 如何在颤动中点击屏幕监听器
- c# - C# 从文本文件中查找特定行/显示到列表视图
- java - 通过数据库快照检索孩子列表