在iOS iTunes App Store沙盒中測試我的應用程序時遇到了一個奇怪的問題。我有兩個開發人員測試帳戶(通過iTunes Connect設置) - 一組使用英國商店,另一組使用烏克蘭商店。iOS:App Store沙箱爲測試用戶返回錯誤貨幣
當應用程序啓動時,它通過SKProductsRequest獲取可用IAP項目的列表。然後,它使用下面的代碼顯示該項目的價格(已實現爲SKProduct的範疇,所以「自我」是指SKProduct實例):
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormatter setLocale:self.priceLocale];
return [currencyFormatter stringFromNumber:self.price];
據我所知,這是相當多Apple爲此任務推薦的代碼。當我使用英國商店帳戶來測試我的應用內購買時,一切正常,價格以英鎊顯示。但是,當我使用烏克蘭測試賬戶時,價格以美元而非烏克蘭貨幣顯示。
展望這個遠一點,我想打印出一些在調試控制檯的priceLocale性質的,如下:
NSLog(@"PriceLocale country Code: %@, localeIdentifier %@", , [self.priceLocale objectForKey:NSLocaleCountryCode], [self.priceLocale localeIdentifier]);
輸出從中:
PriceLocale country Code: UA, localIdentifier [email protected]=USD
讀了在區域設置標識符看來,@符號用於修改區域設置以覆蓋某些設置,在這種情況下,似乎貨幣設置爲美元。事情是,我無法弄清楚爲什麼。任何人都可以就可能出現的問題提供任何建議,或者我可以如何進一步研究它?
我應該居然來標記爲解決答案,因爲這就是我最終發現 - 這是一個有益的聯繫,雖然,乾杯! – eggboxderek