2011-07-14 51 views
1

愁楚,我有我的应用程序正确地显示用户的货币符号与这条线:货币,语言环境

NSString *sym = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol]; 

当我改变我的设备的语言环境的符号是被选择的国家是正确的。

我在找的是货币价值似乎留在英镑?

因此,我在iTunes Connect中设置了价格为1.49英镑的价格,但是当我更改德语时,显示€1.49而不是€1.70?

我的印象是从设备获得的iTunes Connect的价格是用户货币,这不是吗?

不用说我在恐慌模式....任何建议请?

回答

2

除非您计划在每次显示金额时调用货币兑换率webservice,否则您希望将货币符号保留在原始区域设置(£)中。原因是因为汇率波动,这在API中没有编程,因此价格不会在您的代码中自动更新。

当用户直接连接到iTunes时,他们会看到正确的价格,因为Apple已经在他们身边完成了货币转换。您的代码需要进行自己的转换。

+0

“自动”获取它的唯一方法是在iTunes Store请求中发送用户的文化,并让它们为您进行转换。 – GalacticCowboy

+0

我仍然感到困惑,因为我被告知澳大利亚的一位用户看到了正确的澳元金额,但是有一个英镑符号,所以看起来更加昂贵。同样,中国的用户再次看到了正确的人民币价值,但再次用英镑符号使他们认为该应用程序的价格要高得多。所以它看起来像当我的应用程序从iTunes获得价格连接它正在转换?但是由于现在苹果的价格层面已经发生变化,它总是显示英镑价格? – user7865437

+0

你最近怎么样?您是指App Store中还是您自己的应用程序中。 – Joe

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]; 

}

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文档中我应该看到的区域设置货币值?