在 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
阅读语言环境标识符,@ 符号似乎用于修改语言环境以覆盖某些设置,在这种情况下,货币似乎被设置为美元。问题是,我不知道为什么。任何人都可以就问题可能是什么或我如何进一步调查它提供任何建议吗?
最佳答案
您的代码没有问题,但目前无法在 App Store 中以乌克兰格里夫纳汇率购买商品。乌克兰的应用程序商店和许多其他国家/地区以美元运营。有关使用美元的商店的完整列表,请参阅下面的链接。
关于iOS:App Store 沙盒为测试用户返回错误的货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565787/