Правильный формат автоматически возобновляемой подписки Apple expires_dateIOS

Программируем под IOS
Ответить
Anonymous
 Правильный формат автоматически возобновляемой подписки Apple expires_date

Сообщение Anonymous »

Как указано в заголовке, я ищу правильный формат автоматически возобновляемой подписки Apple «expires_date».
Поле «expires_date» берется из данных json квитанции App Store. .
например:

Код: Выделить всё

       [{
"quantity": "1",
"product_id": "test2",
"transaction_id": "1000000472106082",
"original_transaction_id": "1000000472106082",
"purchase_date": "2018-11-13 16:46:31 Etc/GMT",
"purchase_date_ms": "1542127591000",
"purchase_date_pst": "2018-11-13 08:46:31 America/Los_Angeles",
"original_purchase_date": "2018-11-13 16:46:31 Etc/GMT",
"original_purchase_date_ms": "1542127591000",
"original_purchase_date_pst": "2018-11-13 08:46:31 America/Los_Angeles",
"is_trial_period": "false",
"expires_date" : "2023-05-24 18:01:31 Etc/GMT"
}]
Я использую:

Код: Выделить всё

@"yyyy-MM-dd HH:mm:ss VV"
Я обычно вижу такие даты:

Код: Выделить всё

2023-05-24 18:01:31 Etc/GMT
В большинстве случаев это работает. Тем не менее, в целом бывают случаи, когда кажется, что он дает сбой, но не всегда я наблюдаю больше сбоев на устройствах iOS в Великобритании. К сожалению, я не знаю, как выглядит строка даты в этих случаях, поскольку этот код выполняется на устройстве.
На сайте разработчика Apple нет информации относительно правильный формат. Существует устаревший документ, в котором указан формат даты RFC3339. Однако это неверно. Это также не формат ISO8601.
Кстати, вот код, который я использую.

Код: Выделить всё

 NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss VV";
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

NSDate* expireDate = [formatter dateFromString:expireDate];
Затем я сравниваю это с текущим днем ​​с датой, созданной следующим образом:

Код: Выделить всё

NSDate* nowDate = [NSDate date];
if(([nowDate compare:expireDate] == NSOrderedDescending) ||
([nowDate compare:bufferDate] == NSOrderedSame))
{
//the subscription has expired
retVal = true;
}
Как я уже говорил, в большинстве случаев предоставленный мной формат работает, но иногда — нет. Поэтому я подозреваю, что проблема с форматом поля expires_date.

Подробнее здесь: https://stackoverflow.com/questions/790 ... pires-date
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»