ios - StoreKit - 如何获得正确的有效期?

标签 ios date subscription storekit

我已经让 StoreKit 用于自动续订订阅,并且可以通过 Sandbox 成功购买和续订订阅。到目前为止,还不错。

我遇到的问题是 apple 返回的到期日期似乎不正确。

首次购买订阅时,它会给您一个收据 响应。在此响应中,它为您提供了 expires_date_formatted,这是通过查询从 apple 返回的响应的 receiptlatest_receipt_info 部分获得的。

当订阅过期时,您将收到一个latest_expired_receipt_info 响应(这不会出现在常规购买中,只有在收据过期时才会出现)。

无论出于何种原因,latest_expired_receipt_infoexpires_date_formatted 中存储了不同的日期,这让我很头疼。

通常我的应用会报告订阅已过期,但当您尝试重新购买订阅时,它会说订阅仍然有效。

这似乎暗示 latest_expired_receipt_info 中的日期是准确的,但似乎无法获取该日期(除非您故意让订阅过期)。

例子:

receipt (stored) = {
    bid = "myappid.goeshere";
    bvrs = "1.0";
    "expires_date" = 1321365095905;
    "expires_date_formatted" = "2011-11-15 13:51:35 Etc/GMT";
    ...other stuff....
}
latest_expired_receipt_info = {
    bid = "myappid.goeshere";
    bvrs = "1.0";
    "expires_date" = 1321366860000;
    "expires_date_formatted" = "2011-11-15 14:21:00 Etc/GMT";
    ...other stuff...
}

在上面的例子中,我们可以看到expires_date_formatted是完全不同的,一个说13:51,一个说14:21

在其他测试中,差异可能从几分钟到十分钟或二十分钟不等。

如何获得正确的 expires_date_formatted

最佳答案

您正在沙盒模式而不是生产模式下进行测试。

在这种情况下,订阅时间要短得多:7 天订阅只有 5 分钟,而 1 年订阅在一小时后到期。

关于ios - StoreKit - 如何获得正确的有效期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138112/

相关文章:

ios - UIPageViewController : viewControllerBeforeViewController and viewControllerAfterViewController not called

ios - 显示字典数组的问题

mysql - 按月分组取决于月份的最后日期

api - 将 API 发布到选定的订阅者组或 wso2 api 管理器中的内部用户

ios - 在应用程序中使用相同的 Apple 帐户但使用不同的用户帐户时禁用恢复 IAP

Android - Play 商店 - 更改订阅的到期日期

ios - iOS本地文件访问和Webkit

iOS UIView 不调整 subview 的大小?

mysql - 如何在 MySQL 查询中使用 BETWEEN 的对立面?

mysql - 用于选择年份在两个日期之间的行的 SQL 查询