iOS应用内购买沙盒模式测试逻辑

时间:2019-06-21 05:38:59

标签: ios in-app-purchase sandbox

在我的应用中,有一个每月自动续订的订阅。我们正在基于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总是0expired也总是如此。在沙盒模式下 如果我将条件从greater than zero (>0)更改为>=0以进行沙箱模式测试,并且在提交应用程序后又恢复为>0,则Apple审核小组还将使用沙箱模式来解锁它吗?

我该如何解决这种情况?

2 个答案:

答案 0 :(得分:0)

不太确定,但是看来您的服务器端天数计算可能是错误的。在沙盒模式下,每月自动续订订阅将在5分钟内到期,并且会触发续订。该操作大约进行了5次左右,因此无论如何,您的订阅都会在30分钟左右后被取消。

在我看来,如果您要计算剩余天数,因为30分钟少于24小时,此计算可能有缺陷。

一种更好的方法是返回订阅到期的确切日期时间,并在您的应用中使用该日期来启用/禁用功能。

答案 1 :(得分:0)

沙盒订阅会在约5分钟后过期,因此“剩余天数”始终为0。

发回expires_date和服务器时间戳以在客户端上计算剩余时间。

不要仅发送expires_date,因为设备时间可能不正确。