валюта горе с местами - PullRequest
1 голос
/ 14 июля 2011

В моем приложении правильно отображается символ валюты пользователя с этой строкой:

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

И когда я меняю локаль моего устройства, символ подходит для выбранной страны.

Что я обнаружил, так это то, что денежная стоимость, похоже, осталась в фунтах стерлингов?

Итак, в iTunes Connect установлена ​​цена в 1,49 фунтов стерлингов, но когда я перехожу к Германии, отображается 1,49 евро, а не 1,70?

У меня сложилось впечатление, что цена, полученная от iTunes Connect устройством, будет в валюте пользователя, не так ли?

Само собой разумеется, я нахожусь в режиме паники .... любой совет, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 14 июля 2011

Если вы не планируете звонить на веб-службу обмена валют каждый раз, когда вы отображаете сумму, вы хотите оставить символ валюты в исходной локали (£).Причина этого в том, что обменные курсы колеблются, что не запрограммировано в API, поэтому цена не будет автоматически обновляться в вашем коде.

Когда пользователь подключается к iTunes напрямую, он увидит правильную цену, потому чтоApple уже сделала конвертацию валюты на их стороне.Ваш код должен будет делать свои собственные преобразования.

0 голосов
/ 15 июля 2011

Теперь я обнаружил, что это правильный способ отображения локализованной цены:

    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, я должен видеть денежную стоимость локали ???

0 голосов
/ 15 июля 2011

Я получаю такую ​​цену:

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

}

...