Как получить языковые курсы валют для покупок в приложениях в iOS?
Я хочу узнать местоположение пользователя App Store. Это означает, что они находятся в магазине в США, Австралии (AUD). Используемый код.
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
Books = response.products;
if ([SKPaymentQueue canMakePayments] && [response.products count]>0) {
}
for (SKProduct *book in Books) {
NSLocale *locat=[NSLocale currentLocale];
NSString *strlocate=[locat objectForKey:NSLocaleCountryCode];
NSLog(@"\n\n\n Device country== %@ \n\n\n",strlocate);
NSLocale* storeLocale = book.priceLocale;
NSString *storeCountry = (NSString*)CFLocaleGetValue((CFLocaleRef)storeLocale, kCFLocaleCountryCode);
NSLog(@"\n\n\n store country== %@ \n\n\n",storeCountry);
}
}
Я хочу, чтобы мудрый, если уровень книги один, означает 0,99 доллара США за 0,99 доллара США за фунт стерлингов на основе таблицы матриц цены магазина приложений.
Я тестировал в симуляторе. Я изменил название страны в приложении iTunes, appstore и safari в системе. но я получаю только код страны в США.
Изменить:
Настройки- > Общие- > Международные- > Формат региона- > страна
Я тестировал в устройстве: страна устройства только изменилась. магазин страна указана код страны США и цена. Я хочу сохранить код страны до начала покупки в течение времени покупки.
сколько дней раз меняете цену на основе колебаний валютных курсов?
он предоставляет любой api/запрос для измененной цены для известного/обновления?
моя операция inapp сделала один класс. Перед операцией inapp я хочу отобразить локальную цену, чтобы тот же эффект цены отражался в операции inapp.
i отображает список книг, свободных и оплаченных книг, которые отображаются на моем сервере. в том, что я показываю цену за каждый элемент. эти цены товара при обработке AppStore он покажет цену в долларах. если appstore показал цену, как и я хочу показать. так что я хочу отправить код страны на свой сервер с того, что мой сервер отвечает, что прейскурант, связанный с этой страной, и символ валюты.
Ответы
Ответ 1
productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:prodcutIdentifier];
productsRequest.delegate = self;
// This will trigger the SKProductsRequestDelegate callbacks
[productsRequest start];
Это вызовет функцию делегата. Как только это будет сделано, он автоматически вызовет указанную ниже функцию. Здесь будет отправлен запрос на хранилище приложений.
(void)requestDidFinish:(SKRequest *)request
{
SKProduct *book = [Books objectAtIndex:0];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:book.priceLocale];
NSLocale* storeLocale = book.priceLocale;
NSString *storeCountry = (NSString*)CFLocaleGetValue((CFLocaleRef)storeLocale, kCFLocaleCountryCode);
}
предоставить информацию о локали и стране в соответствии с вашими интересами.
Ответ 2
Здесь книга SKProduct:
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:book.priceLocale];
NSString *formattedPrice = [numberFormatter stringFromNumber:book.price];
NSLog(@"%@", formattedPrice);
просто спросите, если что-то неясно!
Привет,
Ответ 3
Одна строка кода:
product
является экземпляром объекта SKProduct
:
NSString *price = [NSString stringWithFormat:@"%@%@ %@", [product.priceLocale objectForKey:NSLocaleCurrencySymbol], product.price, [product.priceLocale objectForKey:NSLocaleCurrencyCode]];
Результаты:
$1.39 USD
Ответ 4
i использую это:
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:basicProduct.priceLocale];
NSString *formattedString = [numberFormatter stringFromNumber:basicProduct.price];
NSLog(@"product with currency:%@", formattedString);
[retDict setObject:formattedString forKey:@"basic_price"];
NSLog(@"Product title: %@" , basicProduct.localizedTitle);
NSLog(@"Product description: %@" , basicProduct.localizedDescription);
NSLog(@"Product price: %@" , basicProduct.price);
NSLog(@"Product id: %@" , basicProduct.productIdentifier);
в методе делегата:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
это можно сделать, прежде чем пользователь нажимает, чтобы начать покупать вещи.
Ответ 5
Вы можете узнать больше о локальных объектах, а также
Я думаю, вы также можете использовать языковой стандарт для NSLocale, как показано ниже
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLocale:[NSLocale currentLocale];
NSString *localizedMoneyString = [formatter stringFromNumber:myCurrencyNSNumberObject];
и вы получите правильную форматированную валютную строку, подобную этой,
SKProduct *product = [self.products objectAtIndex:indexPath.row];
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLocale:product.priceLocale];
currencyString = [formatter stringFromNumber:product.price];
и я также попробовал это в своем приложении
NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithString:@"50.00"];
NSNumberFormatter *currencyFormat = [[NSNumberFormatter alloc] init];
NSLocale *locale = [NSLocale currentLocale];
[currencyFormat setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormat setLocale:locale];
NSLog(@"Amount with symbol: %@", [currencyFormat stringFromNumber:amount]);//Eg: $50.00
NSLog(@"Current Locale : %@", [locale localeIdentifier]);//Eg: en_US
Надеюсь, это поможет вам
Ответ 6
На устройстве в продуктахответ от вас вы получите правильный товар.цены и продукт .priceLocale для учетной записи AppStore, вы в настоящее время вошли в систему. Поэтому, если вы используете этот язык для форматирования полученной цены, вы получите строки, такие как "0.99 $", "33, 0 руб." и т.д.
Ответ 7
В Swift 3:
let numberFormatter = NumberFormatter()
numberFormatter.formatterBehavior = .behavior10_4
numberFormatter.numberStyle = .currency
numberFormatter.locale = product.priceLocale
let formattedPrice = numberFormatter.string(from: product.price)
Ответ 8
Используйте https://github.com/bizz84/SwiftyStoreKit, есть
localizedPrice в SKProduct
Непосредственно используйте эту переменную-член в порядке, НИКАКОЙ ЛЮБОЙ КОНВЕРСИИ КОДА НЕОБХОДИМО !!
App Store ответит правильную локальную цену на ваше приложение, исходя из текущего региона/региона App Store. Как изменить:
https://apple.stackexchange.com/a/89186/283550
Я протестировал поведение, это правильно после того, как я сменил страну из Гонконга на Тайвань, я вижу, что уровень Tier 1 изменился с HK $ 8 до $ 30. (Доллар Гонконга до Тайваньского Доллара)
Ответ 9
create macro first then use it
#define CURRENCY_SYMBOL [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol]
NSLog(@"%@ %.2f",CURRENCY_SYMBOL,25.50);