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

Я столкнулся со странной проблемой при тестировании своего приложения в iOS iTunes App Store Sandbox. У меня есть две тестовые учетные записи разработчика (настроенные через 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

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


person Community    schedule 13.12.2013    source источник


Ответы (1)


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

Магазины приложений, в которых доллар США является валютой продажи

person Liam    schedule 19.05.2014
comment
На самом деле я должен был прийти и отметить ответ как решенный, поскольку это то, что я в конце концов обнаружил - хотя это полезная ссылка, ура! - person ; 20.05.2014