在我的应用中,有一个每月自动续订的订阅。我们正在基于expires_date
中的latest_receipt_info
进行服务器端验证,然后使用if daysLeft
使用daysLeft > 0
计算并发送到应用,然后解锁订阅功能。
if(_backendDaysLeft) {
if(_backendDaysLeft.integerValue > 0) {
NSLog(@"Subs :ACTIVE");
status = SubscriptionStatusActive;
}
else {
NSLog(@"Subs :EXPIRED");
status = SubscriptionStatusExpired;
}
}
但是在沙盒模式下,在我们的测试中,daysLeft
总是0
,expired
也总是如此。在沙盒模式下
如果我将条件从greater than zero (>0)
更改为>=0
以进行沙箱模式测试,并且在提交应用程序后又恢复为>0
,则Apple审核小组还将使用沙箱模式来解锁它吗?
我该如何解决这种情况?
答案 0 :(得分:0)
不太确定,但是看来您的服务器端天数计算可能是错误的。在沙盒模式下,每月自动续订订阅将在5分钟内到期,并且会触发续订。该操作大约进行了5次左右,因此无论如何,您的订阅都会在30分钟左右后被取消。
在我看来,如果您要计算剩余天数,因为30分钟少于24小时,此计算可能有缺陷。
一种更好的方法是返回订阅到期的确切日期时间,并在您的应用中使用该日期来启用/禁用功能。
答案 1 :(得分:0)
沙盒订阅会在约5分钟后过期,因此“剩余天数”始终为0。
发回expires_date
和服务器时间戳以在客户端上计算剩余时间。
不要仅发送expires_date
,因为设备时间可能不正确。