suscripciones restricciones historial desactivar compras compra cancelar apple app iphone ios objective-c in-app-purchase

iphone - restricciones - itunes



¿Cómo obtener el precio de la moneda local para compras dentro de la aplicación en iOS? (9)

Aquí el libro es el 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 pregunta si algo no está claro!

Saludos,

Quiero averiguar la ubicación de la tienda de aplicaciones del usuario. Significa que están en la tienda de Estados Unidos, Australia (AUD). Siguiendo el código utilizado.

- (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 de libro es uno significa US $ 0.99 AUD 0.99 JPY 85 basado en la tabla de matriz de precios de la tienda de aplicaciones.

Lo 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 los Estados Unidos.

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

Probé en el dispositivo: el país del dispositivo solo cambió. tienda país mostrar código de país de Estados Unidos y el precio. Quiero almacenar el código de país antes de comenzar el tiempo de compra inapp.

¿Cuántos días, una vez que cambie el precio según la fluctuación de la moneda? es proporcionar alguna API / consulta para el precio fluctuado a conocer / actualizar?

Mi operación de inapp hizo una clase. Antes de que se realice la operación de inapp, quiero mostrar el precio local para el mismo efecto de precio del usuario reflejado en la operación de inapp.

Muestro la lista de libros gratuitos y pagados que es la lista que obtuve de mi servidor. en eso muestro el precio para cada artículo. El precio de esos ítems mientras procesa la tienda de aplicaciones mostrará el precio en dólares. si appstore muestra el precio como también quiero mostrar. de modo que quiero enviar el código de país a mi servidor desde el que mi servidor responde a la lista de precios y el símbolo de moneda relacionados con ese país.


En Swift 3:

let numberFormatter = NumberFormatter() numberFormatter.formatterBehavior = .behavior10_4 numberFormatter.numberStyle = .currency numberFormatter.locale = product.priceLocale let formattedPrice = numberFormatter.string(from: product.price)


En Xcode 9 (no verifiqué otra versión), ya existe

LocalizedPrice en SKProduct

Usar directamente esta variable miembro está bien, ¡ NO SE NECESITA NINGUNA CONVERSIÓN DE CÓDIGO!

App Store responderá el precio local correcto a su aplicación, según el País / Región de App Store del usuario actual. Cómo cambiar:

https://apple.stackexchange.com/a/89186/283550

He probado el comportamiento, es correcto después de que cambié el país de Hong Kong a Taiwán, puedo ver que el Nivel 1 de precio cambió de HK $ 8 a $ 30. (Dólar de Hong Kong a Dólar de Taiwán)


En el dispositivo en productsResponse recibe product.price y product.priceLocale para la cuenta de AppStore, actualmente está conectado. Por lo tanto, si usa esta configuración regional para el formato del precio recibido, obtendrá cadenas como "0.99 $", "33,0 руб . " y así.


Puede ir a saber más sobre objetos de configuración regional, y creo que también puede usar la configuración 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 como esta,

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é este 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


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 de delegado:

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

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


Una línea de código:

product es la instancia del objeto SKProduct :

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

Resultados:

$ 1.39 USD


create macro first then use it #define CURRENCY_SYMBOL [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol] NSLog(@"%@ %.2f",CURRENCY_SYMBOL,25.50);


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

Esto llamará a su función de delegado. Una vez hecho lo anterior, automáticamente llamará a la función mencionada a continuación. Aquí es donde se finalizará la solicitud 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 los detalles de la localidad y el país según su interés.