我已经通过以下演示在我的应用程序中成功完成了应用内购买:https://www.logisticinfotech.com/blog/ios-swift-in-app-subscription-with-receipt-validation
问题:如何获取当前已取消订阅的活跃产品的收据数据?
提前致谢。
你得到它的方式与他们在
expiration_date
中使用 getExpirationDateFromResponse()
的方式相同。
注意: 仅当 Apple 客户支持取消订阅时,
cancellation_date
字段才会添加到收据中。
编辑:如何获得
expiration_intent
?
根据功能
getExpirationDateFromResponse(jsonResponse:)
(来自您问题中的链接),您可以像这样访问expiration_intent
:
guard let unifiedReceipt = jsonResponse["unified_receipt"] as? NSDictionary,
let pendingRenewalInfos = unifiedReceipt["pending_renewal_info"] as? NSArray,
let latestInfo = pendingRenewalInfos.firstObject as? NSDictionary,
let expirationIntent = latestInfo["expiration_intent"] as? String else { fatalError("Couldn‘t determine expiration intent") }
print("expiration_intent \(expirationIntent)")
您可以从 StoreKit2 的 Product.SubscriptionInfo.RenewalInfo.willAutoRenew 访问此信息。 WillAutoRenew 变量告诉我们订阅是否会续订。
当启动任何具有组的订阅时,它将 AutoRenew 变量设置为 true。当用户取消订阅时,此变量将更改为 false。
要打开下面的窗口,请遵循以下路径:XCODE -> 调试 -> StoreKit -> 管理事务。
请点击订阅选项按钮。购买后,自动续订订阅交易将出现在此处。
选择取消订阅,然后单击“完成”按钮。
如图所示,用户取消订阅后将不会续订。所以您可以通过以下功能了解取消的信息。请提供您想要取消或不取消的产品信息。
func IsWillRenew(product: Product) async -> Bool? {
guard let SubscriptionGroupStatus = try? await product.subscription?.status.first else {
print("There is no AutoRenewable Group")
return nil
}
guard case .verified(let renewalInfo) = SubscriptionGroupStatus.renewalInfo else {
print("The App Store could not verify your subscription status.")
return nil
}
return renewalInfo.willAutoRenew
}
结果