Подтвердить что ты не робот

Как получить языковые курсы валют для покупок в приложениях в 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 показал цену, как и я хочу показать. так что я хочу отправить код страны на свой сервер с того, что мой сервер отвечает, что прейскурант, связанный с этой страной, и символ валюты.

4b9b3361

Ответ 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);