StoreKit 2 消耗品的意外行为
StoreKit 2 unexpected behavior with consumable items
我正在尝试使用 StoreKit 2 实现 iAP。也许我的代码不是很优雅,但似乎可以工作 ;-)
但是我无法理解以下行为:
如果我首先在模拟器或测试设备上启动我的应用程序,我可以购买消耗品。如果我想再次购买它(消耗品应该如何工作)应用程序会自动恢复购买并且不要求购买。
这是我测试环境中的特定行为还是我对耗材的理解有误?
由于 StoreKit 2 还很新,我在网上还没有找到适合我的教程。
欢迎任何提示:-)
也许我解决了我的问题。如果我是对的,可以请人批准吗?
我在购买中添加了 await transaction.finish()
func purchaseTSBooster() {
self.boughtItem = true
Task.init {
guard let tsProduct = tsBoosterProducts.first else {return}
do {
let result = try await tsProduct.purchase()
switch result {
case .success(let verification):
switch verification {
case .verified(let transaction):
DispatchQueue.main.async {
self.tsBoosterID.append(transaction.productID)
}
await transaction.finish()
case .unverified(_, _):
break
}
case .userCancelled:
buyaborted = true
case .pending:
break
@unknown default:
break
}
}
catch {
print(error)
}
}
}
我正在尝试使用 StoreKit 2 实现 iAP。也许我的代码不是很优雅,但似乎可以工作 ;-) 但是我无法理解以下行为: 如果我首先在模拟器或测试设备上启动我的应用程序,我可以购买消耗品。如果我想再次购买它(消耗品应该如何工作)应用程序会自动恢复购买并且不要求购买。
这是我测试环境中的特定行为还是我对耗材的理解有误? 由于 StoreKit 2 还很新,我在网上还没有找到适合我的教程。
欢迎任何提示:-)
也许我解决了我的问题。如果我是对的,可以请人批准吗?
我在购买中添加了 await transaction.finish()
func purchaseTSBooster() {
self.boughtItem = true
Task.init {
guard let tsProduct = tsBoosterProducts.first else {return}
do {
let result = try await tsProduct.purchase()
switch result {
case .success(let verification):
switch verification {
case .verified(let transaction):
DispatchQueue.main.async {
self.tsBoosterID.append(transaction.productID)
}
await transaction.finish()
case .unverified(_, _):
break
}
case .userCancelled:
buyaborted = true
case .pending:
break
@unknown default:
break
}
}
catch {
print(error)
}
}
}