iOS: песочница App Store возвращает неверную валюту для тестовых пользователей

Я столкнулся со странной проблемой при тестировании своего приложения в песочнице iOS App Store для iOS. У меня есть два тестовых аккаунта для разработчиков (настроенных через iTunes Connect) - один для использования в магазине в Великобритании, а другой для использования в магазине в Украине.

Когда приложение запускается, оно получает список доступных элементов IAP через SKProductsRequest. Затем он отображает цену товара, используя следующий код (он был реализован как категория SKProduct, поэтому "self" относится к экземпляру SKProduct):

   NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
    [currencyFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [currencyFormatter setLocale:self.priceLocale];
    return [currencyFormatter stringFromNumber:self.price];

Насколько мне известно, это в значительной степени рекомендованный Apple код для этой задачи. И когда я использую учетную запись в британском магазине для проверки своих покупок в приложении, все работает отлично, цена отображается в фунтах. Однако, когда я использую украинский тестовый аккаунт, цена отображается в долларах США, а не в украинских гривнах.

Посмотрев немного подробнее, я попытался распечатать некоторые свойства priceLocale в консоли отладки следующим образом:

NSLog(@"PriceLocale country Code: %@, localeIdentifier %@", , [self.priceLocale objectForKey:NSLocaleCountryCode], [self.priceLocale localeIdentifier]);

Выход из которого был:

PriceLocale country Code: UA, localIdentifier en_UA@currency=USD

Считывая идентификаторы локали, кажется, что символ @ используется для изменения локали, чтобы переопределить определенные настройки, в этом случае может показаться, что валюта установлена ​​на USD. Дело в том, что я не могу понять, почему. Кто-нибудь может дать какой-нибудь совет относительно того, в чем может быть проблема, или как я мог бы изучить ее дальше?

1 ответ

Решение

Ваш код в порядке, однако в настоящее время невозможно купить предметы в App Store в украинских гривнах. Украинский магазин приложений и многие другие страны работают в долларах США. Смотрите ссылку ниже для получения полного списка магазинов, где используется доллар США.

App Store, где доллар США является валютой продажи

Другие вопросы по тегам