StoreKit - 如何获得正确的到期日期?
Posted
技术标签:
【中文标题】StoreKit - 如何获得正确的到期日期?【英文标题】:StoreKit - How to get the correct expiry date? 【发布时间】: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 验证收据然后将其缓存,我使用“状态”来确定子是否处于活动状态,缓存的收据将始终处于活动状态,因此我使用到期日期来知道何时启动新的验证呼叫 【参考方案1】:您正在沙盒模式下进行测试,而不是在生产模式下。
在这种情况下,订阅时间要短得多:7 天订阅只需 5 分钟,而 1 年订阅在一小时后到期。
【讨论】:
这真的回答了这个问题吗?我现在正在研究这个问题,订阅是 5 分钟还是 7 天并不重要..“收据”报告更早的到期日期,因此该应用程序会告诉您您的订阅已过期当它仍然跑步。我得到与海报相同的行为,应用程序说它已过期,但当我再次尝试购买时,ios 告诉我订阅仍然有效以上是关于StoreKit - 如何获得正确的到期日期?的主要内容,如果未能解决你的问题,请参考以下文章
如何拦截 StoreKit“购买对话框”以使 MBProgressHUD / UIProgressView 在正确的时间正确显示?