我已经让 StoreKit 用于自动续订订阅,并且可以通过 Sandbox 成功购买和续订订阅。到目前为止,还不错。
我遇到的问题是 apple 返回的到期日期似乎不正确。
首次购买订阅时,它会给您一个收据
响应。在此响应中,它为您提供了 expires_date_formatted
,这是通过查询从 apple 返回的响应的 receipt
或 latest_receipt_info
部分获得的。
当订阅过期时,您将收到一个latest_expired_receipt_info
响应(这不会出现在常规购买中,只有在收据过期时才会出现)。
无论出于何种原因,latest_expired_receipt_info
在 expires_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/