关于应用内购买:iOS:App Store Sandbox 为测试用户返回错误的货币

iOS: App Store Sandbox Returning Wrong Currency for Test Users

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

当应用启动时,它通过 SKProductsRequest 获取可用 IAP 项目的列表。然后它使用以下代码显示商品价格(它已作为 SKProduct 的类别实现,因此"self"指的是 SKProduct 实例):

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

据我所知,这几乎是 Apple 推荐的用于此任务的代码。当我使用英国商店帐户测试我的应用内购买时,一切正常,价格以英镑显示。但是,当我使用乌克兰测试帐户时,价格显示为美元,而不是乌克兰格里夫纳。

进一步研究了这一点,我尝试在调试控制台中打印出一些 priceLocale 属性,如下所示:

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

的输出是:

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

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


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

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