iOS:App Store 沙盒为测试用户返回错误的货币

标签 ios in-app-purchase currency-formatting

在 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 中以乌克兰格里夫纳汇率购买商品。乌克兰的应用程序商店和许多其他国家/地区以美元运营。有关使用美元的商店的完整列表,请参阅下面的链接。

App Stores where the US Dollar is the currency of sale

关于iOS:App Store 沙盒为测试用户返回错误的货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565787/

相关文章:

ios - 为什么小于 1.0pts 的线条无法在非视网膜屏幕上正确呈现?

objective-c - Mac OS X 应用程序的应用程序内购买

ios - Swift IAP SK产品显示错误价格

ios - RestKit + CoreData : replace entity content in case of operation success, 在失败的情况下保持原样

ios - 在其他应用程序中打开文件扩展名 (iOS)

iphone - Apple Mach-O 链接器错误 (IAP)

android - 如何避免新的应用内购买底部表单将整个应用推高

swift - NSNumberFormatter : Show 'k' instead of ',000' in large numbers?

php - 在 MySQL 和 PHP 中处理货币时如何处理精度

ios - 使用 Facebook SDK 进行身份验证后转到下一个 View