我想通过编程找出用户iphone上的货币区域设置.这意味着,如果用户在美国store ,货币区域应该是美元,对于澳大利亚,应该是澳元.我这项任务的目的是try 将我们应用程序上列出的商品价格转换为与AppStore要求的价格接近的价格.
例如,如果我们卖一个3美元的视频,一个澳大利亚人想买它,那么我应该在我的应用程序屏幕上显示2.8澳元.这将减少用户对本国实际价格的计算.有人知道怎么做吗?
我想通过编程找出用户iphone上的货币区域设置.这意味着,如果用户在美国store ,货币区域应该是美元,对于澳大利亚,应该是澳元.我这项任务的目的是try 将我们应用程序上列出的商品价格转换为与AppStore要求的价格接近的价格.
例如,如果我们卖一个3美元的视频,一个澳大利亚人想买它,那么我应该在我的应用程序屏幕上显示2.8澳元.这将减少用户对本国实际价格的计算.有人知道怎么做吗?
在大多数情况下,货币符号是不够的.例如,在德国,我们的价格是这样写的:1,99欧元,但美国人使用1.99美元.这个字符串有三个不同之处.货币符号、其位置和分隔符.
如果你想把它做好,你应该使用NSNumberFormatter.它处理了货币格式之间的所有差异.而且它比你做得更好.因为它适用于所有货币,而不仅仅是你想要支持的4种主要货币.
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLocale:[NSLocale currentLocale]];
NSString *localizedMoneyString = [formatter stringFromNumber:myCurrencyNSNumberObject];
如果你想在应用程序内购买,你不能依赖用户当前的语言环境,因为可以在带有DE(德语)语言环境的设备上使用基于美国的帐户.你的商品价格(在德国实际价格为0.79欧元)将显示为0.99欧元(因为在美国价格为0.99美元).这是错误的.你已经从app store获得了本地化价格,不需要自己计算
您将获得如下格式的正确货币字符串:
SKProduct *product = [self.products objectAtIndex:indexPath.row];
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLocale:product.priceLocale];
currencyString = [formatter stringFromNumber:product.price];
编辑:因为你特别要求提供货币代码.
你可以得到它与NSString *currencyCode = [formatter currencyCode];
这将给你的货币代码根据ISO 4217.澳元、美元、欧元等.