¿Cómo get el precio de la moneda local para las compras en la aplicación en iOS?

Quiero averiguar la location de la tienda de aplicaciones del usuario. Significa que están en la tienda de EE. UU., Australia (AUD). Se usa el siguiente código.

- (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); } } 

Quiero saber si el nivel del libro es uno significa US $ 0,99 AUD 0,99 JPY 85 en function de la tabla de la matriz del precio de la tienda de aplicaciones.

Probé en el simulador. Cambié el nombre del país en iTunes, appstore y aplicación de safari en el sistema. pero solo obtengo el código de país de EE. UU.

Editar: Configuración-> General-> Internacional-> Formato de región-> país

Probé en el dispositivo: el país del dispositivo solo cambió. país de la tienda muestra el código de país de EE. UU. y el precio. Quiero almacenar el código de país antes de iniciar el time de compra de la aplicación.

¿Cuántos días cambian una vez el precio según la fluctuación monetaria? ¿Proporciona alguna api / consulta para conocer el precio fluctuado / actualizar?

mi operación inapp hizo una class. Antes de la operación de inapp realizada, quiero mostrar el precio local al usuario. El mismo efecto de precio se refleja en la operación de inapp.

muestro la list de libros gratuitos y de pago que es la list obtenida de mi server. en que muestro el precio de cada artículo. el precio del artículo al procesar la tienda de aplicaciones mostrará el precio en dólares. si la tienda muestra el precio como también quiero que se muestre. para que yo quiera enviar el código de país a mi server de que mi server responda esa list de precios relacionados con el país y el símbolo de moneda.

 productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:prodcutIdentifier];    productsRequest.delegate = self;       // This will trigger the SKProductsRequestDelegate callbacks    [productsRequest start]; 

Esto llamará a su function de delegado. Una vez que se hace lo anterior, finalmente se llamará automáticamente a la function mencionada a continuación. Aquí es donde se finalizará la request de la tienda de aplicaciones enviada.

 (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);   } 

proporcione la configuration regional y los detalles del país según su interés.

Aquí el libro es 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); 

¡Simplemente pregunte si hay algo poco claro!

Saludos,

Una línea de código:

product es la instancia del object SKProduct :

 NSString *price = [NSString stringWithFormat:@"%@%@ %@", [product.priceLocale objectForKey:NSLocaleCurrencySymbol], product.price, [product.priceLocale objectForKey:NSLocaleCurrencyCode]]; 

Resultados:

$ 1.39 USD

yo uso esto:

  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); 

en el método delegado:

  - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response 

Esto se puede hacer antes de que el usuario haga clic para comenzar a comprar cosas.

Puede conocer más sobre los objects de configuration regional, también creo que también puede usar la configuration regional de moneda de NSLocale, como se muestra a continuación

  NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; [formatter setLocale:[NSLocale currentLocale]; NSString *localizedMoneyString = [formatter stringFromNumber:myCurrencyNSNumberObject]; 

y obtendría la cadena de moneda formateada correcta de esta manera,

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

y también probé esta en mi aplicación

 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 

Espero que te ayude

En el dispositivo en productsResponse usted recibe el producto correcto. Precio y product.priceLocale para la count de AppStore, actualmente está conectado. Por lo tanto, si usa este entorno local para formatear el precio recibido, obtendrá cadenas como "0,99 $", "33,0 руб " y así.

En Swift 3:

  let numberFormatter = NumberFormatter() numberFormatter.formatterBehavior = .behavior10_4 numberFormatter.numberStyle = .currency numberFormatter.locale = product.priceLocale let formattedPrice = numberFormatter.string(from: product.price) 
 create macro first then use it #define CURRENCY_SYMBOL [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol] NSLog(@"%@ %.2f",CURRENCY_SYMBOL,25.50);