ios - 如何获取通过In App Purchase进行的订阅是Active还是InActive?
问题描述
我已经实现了 IAP,我将交易状态存储在 UserDefault 中,根据 UserDefault 中的值,我将决定是否在 ViewWillAppear 中显示 Buy Button,但问题是当我们卸载应用程序时,Userdefault 值被清除并且我不会得到正确的值来处理购买按钮的可见性,是否有任何其他方式可以处理或检查用户之前是否购买过产品?如果他购买了产品,我将不会在 UI 中显示任何购买按钮如果他没有购买,我将显示购买按钮。
// Calling this in ViewWillAppear
if isSubscriptionActive() {
subscriptionStatusLbl.text = "Active Plan"
shouldhidePriceView(isHidden: true)
} else {
subscriptionStatusLbl.text = "Subscription Plan"
shouldhidePriceView(isHidden: false)
}
// This function return Bool value depending on whether the value is present in UserDefault or not
func isSubscriptionActive() -> Bool {
let purchaseStatus` = UserDefaults.standard.bool(forKey: productID)
if purchaseStatus {
return true
} else {
return false
}
}
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchased :
print("Successful Transaction")
// here I am storing value in Userdefault
UserDefaults.standard.set(true, forKey: productID)
shouldhidePriceView(isHidden: true)
SKPaymentQueue.default().finishTransaction(transaction)
break ;
case .failed:
print("Failed Transaction")
if let error = transaction.error {
print("Transaction failed due to : \(error.localizedDescription)")
}
shouldhidePriceView(isHidden: false)
SKPaymentQueue.default().finishTransaction(transaction)
break ;
case .restored:
print("Restored : Already Purchased");
customNavBarView.blueToothBtn.isHidden = true
shouldhidePriceView(isHidden: true)
UserDefaults.standard.set(true , forKey: productID)
break;
default:
break;
}
}
}
解决方案
我想您没有任何后端(或任何用户帐户),并且所有内容都本地存储在您的应用程序中。
如果我是正确的,唯一的方法是在您的付费专区添加一个“恢复”链接,并在您的设置页面中添加一个“恢复”按钮。这是官方文档。
推荐阅读
- c - 在 Visual Studio Code 中,在 C 上输出“Hello World”函数会发出“警告:返回类型默认为 'int' [-Wimplicit-int]”
- forms - Symfony:将 ManyToMany 转换为 OneToMany / ManyToOne 并将多选保留在默认 form_row()
- assembly - 如何从 eax 移动到较低的寄存器,如 ax 和 bx
- reactjs - 无法访问 ReactJS 中的嵌套状态对象
- python - R不改变等高线图的Plotly色标
- ios - `UIColor` 初始化程序对于 watchOS 框架不可见
- javascript - 删除第 K 个链表节点
- python - 循环没有运行它应该运行的次数
- javascript - Javascript 对象 - 这个
- windows - 将 PNG 序列从目录转换为 MP4