Логика тестирования в режиме песочницы для iOS в приложении - PullRequest
0 голосов
/ 21 июня 2019

В моем приложении ежемесячная подписка на автообновление. Мы выполняем проверку на стороне сервера на основе expires_date из latest_receipt_info, затем вычисляем и отправляем в приложение значение 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 также использовать режим «песочницы» для его разблокировки?

Как мне справиться с этой ситуацией?

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Срок действия подписки на песочницу истекает через ~ 5 минут, поэтому «оставшиеся дни» всегда равны 0.

Отправьте обратно expires_date и метку времени сервера, чтобы вычислить на клиенте оставшееся время.

Не отправляйте обратно только expires_date, так как время устройства может быть неправильным.

0 голосов
/ 21 июня 2019

Не совсем уверен, но похоже, что вычисление оставшихся дней на сервере может быть неверным.В режиме «Песочница» месячная подписка с автоматическим продлением истекает всего через 5 минут, и возобновление запускается.Это продолжается около 5 раз, поэтому в любом случае ваша подписка будет отменена примерно через 30 минут или около того.

Если вы вычисляете оставшиеся дни, мне кажется, что этот расчет может быть ошибочным, так как 30 минут слишком меньше, чем 24 часа.

Лучшим подходом было бы вернуть точную датувремя окончания подписки и использовать его в своем приложении для включения / отключения функций.

...