У меня есть StoreKit для работы с автоматически обновляемыми подписками, и я могу успешно покупать и обновлять подписки через Песочницу. Пока все хорошо.
Проблема, с которой я сталкиваюсь, заключается в том, что дата истечения срока, которую Apple возвращает, кажется неверной.
При первой покупке подписки вы получите ответ receipt
. В этом ответе он дает вам expires_date_formatted
, это получается путем запроса части ответа receipt
или latest_receipt_info
от apple.
Когда срок действия подписки истечет, вы получите ответ 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
?