2011-07-14 165 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文檔中我應該看到的區域設置貨幣值?