【发布时间】:2011-12-29 14:26:19
【问题描述】:
我已让 StoreKit 用于自动续订订阅,并且可以通过沙盒成功购买和续订订阅。到目前为止,一切顺利。
我遇到的问题是苹果返回的到期日期似乎不正确。
首次购买订阅时,它会给您一个receipt 响应。在此响应中,它会为您提供expires_date_formatted,这是通过查询苹果回复的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?
【问题讨论】:
-
我知道这已经过时了,但对其他人来说......如果您的问题是您的应用过早地限制高级功能,而不是向用户报告正确的到期日期预先警告他们,那么如果您使用“状态”值来确定订阅是否仍然有效,也许会更好。 0 = 活动,其他 = 不活动。在我的应用程序中,我使用 Apple 验证收据然后将其缓存,我使用“状态”来确定子是否处于活动状态,缓存的收据将始终处于活动状态,因此我使用到期日期来知道何时启动新的验证呼叫
标签: ios date subscription storekit