1

在 iOS iTunes App Store 沙盒中测试我的应用程序时,我遇到了一个奇怪的问题。我有两个开发者测试帐户(通过 iTunes Connect 设置)- 一组使用英国商店,另一组使用乌克兰商店。

当应用程序启动时,它通过 SKProductsRequest 获取可用 IAP 项目的列表。然后它使用以下代码显示商品价格(它已作为 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

阅读区域设置标识符,似乎 @ 符号用于修改区域设置以覆盖某些设置,在这种情况下,货币似乎被设置为美元。问题是,我不知道为什么。任何人都可以就问题可能是什么提供任何建议,或者我如何进一步研究它?

4

1 回答 1

1

您的代码很好,但目前无法在乌克兰格里夫纳的 App Store 中购买商品。乌克兰的应用商店和许多其他国家/地区以美元运营。有关使用美元的商店的完整列表,请参阅下面的链接。

以美元为销售货币的应用商店

于 2014-05-19T14:53:04.760 回答