iOS应用内购买中如何获取活跃产品的取消订阅?

问题描述 投票:0回答:2

我已经通过以下演示在我的应用程序中成功完成了应用内购买:https://www.logisticinfotech.com/blog/ios-swift-in-app-subscription-with-receipt-validation

问题:如何获取当前已取消订阅的活跃产品的收据数据?

提前致谢。

ios swift in-app-purchase in-app in-app-subscription
2个回答
0
投票

你得到它的方式与他们在

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)")

0
投票

您可以从 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
}

结果

© www.soinside.com 2019 - 2024. All rights reserved.