ios - 如何在评估 iOS 自动更新 iAP 时使用 ASN 本地收据中的字段?

标签 ios in-app-purchase storekit itunes-store mkstorekit

我们的 iOS 应用程序支持具有不同免费试用期的年度订阅。我们的目标是离线评估用户设备上本地可用的收据。

**我们计划这样做:**

  1. 检查 cancellation_date 是否存在 - 非事件订阅
  2. 如果 cancellation_date 不存在,检查 purchase_date 是否存在:

    如果是,检查expires_date是否存在并且处于活跃期——活跃订阅

    如果不存在,检查 expires_date 是否存在并且处于活跃期——可能是试用期

我们无法弄清楚的是,如果用户在试用期间关闭订阅停止付款,应用程序如何知道此类事件?

expires_date 表示“试用期+1 年”还是仅表示“1 年”?

original_purchase_date 或 purchase_date 表示“试用开始”还是“用户付款日期”?

Note: We also plan to periodically refresh local receipt using SKReceiptRefreshRequest.

最佳答案

确保您正在查看所有 in_app 条目的子内容,ASN1 类型 17。每次更新都会有一个。

只有在 Apple 客户服务取消订阅时才会设置取消日期,您应该主要取决于到期日期。

试验被视为 in_apps 数组中单独的 in_app 字段。因此,只要您正在寻找最新的 expires_date 字段,您就会计算出正确的到期日期。

此外,我不确定在使用 SKReceiptRefreshRequest 时 in_apps 的更新程度如何。 Apple 表示在使用订阅时使用服务器端验证和/verifyReceipt 端点。

无耻的插件,但如果你想用更少的努力实现订阅,你可能想试试我的服务,RevenueCat .我们为您处理所有收据解析和跟踪并正确执行。您可以注册 my referral code .

关于ios - 如何在评估 iOS 自动更新 iAP 时使用 ASN 本地收据中的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48124775/

相关文章:

ios - StoreKit 不喜欢从 pList 加载的产品标识符

ios - 引用一个尚不存在的对象

iphone - 应用内购买测试是否需要真实产品?

objective-c - Objective-C : Sending arguments to a method called by a UIButton

ionic-framework - 如何为 ionic 应用程序的应用内购买启用 App Store 促销?

ios - 应用商店 : Make in app purchase item free for 1 day

iphone - InApp 在数组中购买奇怪的排列

ios - 在数组中查找重复的数字,然后计算重复的数量

ios - 我们可以将 xcode 项目 (xcodeproj) 转换为 swift playground (.playground) 格式吗?

ios - 如何在 Objective-C 中调用父类的静态方法。