之后恢复自动续订订阅
Restoring auto-renewable subscriptions after
我们正在使用自动续订订阅,除了一种极端情况外,它工作正常。
如果用户将他们的 iPhone 重置为出厂设置,他们将无法在我们的应用程序中恢复自动续订订阅(或者看起来,我们现在只有两个这样的案例)。
我们正在使用 SwiftyStoreKit,但我认为我们这边存在逻辑错误。
现在我们正在以这种方式恢复购买:
func checkOldSubscriptions()->Bool {
//validator
let appleValidator = AppleReceiptValidator(service: .production, sharedSecret: ss)
for i in 0..<products.count {
//checking every available product in receipt
SwiftyStoreKit.verifyReceipt(using: appleValidator, completion: { (result) in
switch result {
case .success(let receipt):
let purchaseResult = SwiftyStoreKit.verifySubscription(
type: .autoRenewable,
productId: products[i].name,
inReceipt: receipt)
switch purchaseResult {
case .purchased(let expiresDate):
print("Product is valid until \(expiresDate)")
...
}
}
我的假设是重置后我们没有任何收据可以验证,我必须直接取回它。在设备上检查有点困难,因为老实说,我没有真正的测试设备,对我来说很容易被杀死。
所以我想添加类似的内容(在尝试验证收据之前手动刷新收据):
SwiftyStoreKit.verifyReceipt(using: appleValidator, forceRefresh: true) { result in
switch result {
case .success(let receipt):
有意义吗?会有帮助吗?
你是对的。重置后收据不太可能可用。
您需要在 SKPaymentQueue 上调用 restoreCompletedTransactions() 来检索之前标记为已完成的任何交易。
由于您使用的是 SwiftyStoreKit,因此您可以使用 SwiftyStoreKit.restorePurchases。查看文档了解详情。
我们正在使用自动续订订阅,除了一种极端情况外,它工作正常。
如果用户将他们的 iPhone 重置为出厂设置,他们将无法在我们的应用程序中恢复自动续订订阅(或者看起来,我们现在只有两个这样的案例)。
我们正在使用 SwiftyStoreKit,但我认为我们这边存在逻辑错误。
现在我们正在以这种方式恢复购买:
func checkOldSubscriptions()->Bool {
//validator
let appleValidator = AppleReceiptValidator(service: .production, sharedSecret: ss)
for i in 0..<products.count {
//checking every available product in receipt
SwiftyStoreKit.verifyReceipt(using: appleValidator, completion: { (result) in
switch result {
case .success(let receipt):
let purchaseResult = SwiftyStoreKit.verifySubscription(
type: .autoRenewable,
productId: products[i].name,
inReceipt: receipt)
switch purchaseResult {
case .purchased(let expiresDate):
print("Product is valid until \(expiresDate)")
...
}
}
我的假设是重置后我们没有任何收据可以验证,我必须直接取回它。在设备上检查有点困难,因为老实说,我没有真正的测试设备,对我来说很容易被杀死。
所以我想添加类似的内容(在尝试验证收据之前手动刷新收据):
SwiftyStoreKit.verifyReceipt(using: appleValidator, forceRefresh: true) { result in
switch result {
case .success(let receipt):
有意义吗?会有帮助吗?
你是对的。重置后收据不太可能可用。 您需要在 SKPaymentQueue 上调用 restoreCompletedTransactions() 来检索之前标记为已完成的任何交易。
由于您使用的是 SwiftyStoreKit,因此您可以使用 SwiftyStoreKit.restorePurchases。查看文档了解详情。