问题描述
所以对于上下文,它是有效的。但为了让您了解我在做什么,我想基本上做到以下几点:
创建用户时,他们有一个 Bool 键,该键自动设置为 false。基于该键,我可以配置向用户显示的内容。当用户购买并成功时,此键设置为 true。伟大的。如果我将其设置为 false,应用程序会阻止/将用户导航到另一个视图。
问题出在我这里,如果我用他们自己的 Firebase 身份验证 ID 创建另一个用户,然后去恢复,用户似乎可以恢复我最初使用另一个帐户购买的任何计划。我不知道是由于 RevenueCat 使用设备 UID 还是基于我的设备生成了 ID,但是,在我的 RevenueCat 仪表板中,它显示的是 Firebase 用户 ID。所以这没有意义。我已经在网上查看并查看了他们的文档,但似乎没有任何帮助。
我在我的应用程序中对我的 ProductID 进行了硬编码,并对其进行了初始化,以便它们随时可用。我是这样购买的:
在订阅视图中:
subscriptionviewmodel.makeSubscriptionPurchase(selectedProduct: packages.productID!) {
API.USER_API.updateUseRSSubscriptionStatus { (user) in
self.SESSION.userSession = user
} onError: { (error) in
print(error)
}
}
我的采购服务类-
class PurchaseService {
static func purchase(productID: String?,successfulPurchase: @escaping () -> Void) {
guard productID != nil else {return}
var skProduct: SKProduct?
guard let USER_ID = Auth.auth().currentUser?.uid else {return}
Purchases.shared.identify(USER_ID) { (purchaserInfo,error) in
print(purchaserInfo)
Purchases.shared.products([productID!]) { (products) in
if !products.isEmpty {
skProduct = products[0]
Purchases.shared.purchaseProduct(skProduct!) { (transaction,purchaseInfo,error,userCancelled) in
if let error = error {
print(error.localizedDescription)
}
if error == nil && !userCancelled {
successfulPurchase()
}
}
}
}
}
}
}
func makeSubscriptionPurchase(selectedProduct: String,onSuccess: @escaping () -> Void) {
if !prymPremProdcuts.isEmpty {
PurchaseService.purchase(productID: selectedProduct) {
print("PURCHASEMADE")
onSuccess()
}
}
}
在我的 RestorePurchasesView 中:
func configureCatContentFor(purchaserInfo: Purchases.PurchaserInfo?) {
// set the content based on the user subscription status
if let purchaserInfo = purchaserInfo {
if purchaserInfo.entitlements["PRYMPremium"]?.isActive == true {
print("hey there premium")
isHidden = true
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
if let buyDate = purchaserInfo.purchaseDate(forEntitlement: "") {
self.purchaseDate = "Purchase Date: \(dateFormatter.string(from: buyDate))"
}
if let endDate = purchaserInfo.expirationDate(forEntitlement: "") {
self.expirationDate = "Expiration Date: \(dateFormatter.string(from: endDate))"
}
} else {
print("Not premium")
}
}
}
每当我点击我的 RestorePurchases 查看控制台输出:“hey there premium”,这意味着用户有权,但是,这是一个新帐户?
如果有人可以帮助我,将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)