我的应用程序正确显示用户货币符号:
NSString *sym = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol];
当我更改设备的区域设置时,所选国家/地区的符号正确无误。
我发现货币价值似乎保留在英镑?
所以我在iTunes Connect的价格设定为1.49英镑,但当我改为德国时会显示1.49欧元而不是1.70欧元?
我的印象是,设备从iTunes Connect获得的价格将是用户货币,是不是这样?
不用说我处于恐慌模式......有什么建议吗?答案 0 :(得分:2)
除非您计划在每次显示金额时调用货币汇率网络服务,否则您希望将货币符号保留在原始区域设置(£)中。原因是因为汇率波动,而API没有编程,因此价格不会自动更新。
当用户直接连接到iTunes时,他们会看到正确的价格,因为Apple已经完成了货币转换。您的代码需要进行自己的转换。
答案 1 :(得分:0)
我得到这样的价格:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse: (SKProductsResponse *)response {
NSArray *a = [NSArray arrayWithArray:response.products];
SKProduct *p = [a count] == 1 ? [a objectAtIndex:0] : nil;
// if we have a product store the price, otherwise
if (p) {
NSString *sym = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol];
[self setPriceText:[NSString stringWithFormat:@"%@%@",sym, p.price]];
[self setProductFound:YES];
}
else {
[self setPriceText:@"Upgrade product not found"];
[self setProductFound:NO];
}
[request release];
}
答案 2 :(得分:0)
我现在发现这是显示本地化价格的正确方法:
NSArray *a = [NSArray arrayWithArray:response.products];
SKProduct *p = [a count] == 1 ? [a objectAtIndex:0] : nil;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:p.priceLocale];
NSString *formattedString = [numberFormatter stringFromNumber:p.price];
然而,无论我在设备上设置什么样的区域设置,我仍然可以获得相同的货币价值,从我在其他帖子中阅读的内容以及Apple文档中我应该看到区域设置货币价值???