El enfoque de conseguir el código de país de configuración regional del usuario va a funcionar ... pero sólo si la tienda iTunes de usuario es el mismo como su localización. Este no siempre será el caso.
Si crea un elemento de compra en la aplicación, puede usar las API StoreKit de Apple para averiguar el país de iTunes real del usuario, incluso si es diferente de la configuración regional de su dispositivo. Aquí hay un código que funcionó para mí:
- (void) requestProductData
{
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:
[NSSet setWithObject: PRODUCT_ID]];
request.delegate = self;
[request start];
}
- (void) productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *myProducts = response.products;
for (SKProduct* product in myProducts) {
NSLocale* storeLocale = product.priceLocale;
storeCountry = (NSString*)CFLocaleGetValue((CFLocaleRef)storeLocale, kCFLocaleCountryCode);
NSLog(@"Store Country = %@", storeCountry);
}
[request release];
// If product request didn't work, fallback to user's device locale
if (storeCountry == nil) {
CFLocaleRef userLocaleRef = CFLocaleCopyCurrent();
storeCountry = (NSString*)CFLocaleGetValue(userLocaleRef, kCFLocaleCountryCode);
}
// Now we're ready to start creating URLs for the itunes store
[super start];
}
Llegué un poco tarde a la fiesta para mí, y no tendré ninguna posibilidad de usar esto ahora mismo. Si alguien más verifica que esto realmente funciona, y usted puede obtener algunos votos positivos, lo volveré a marcar como la respuesta. Hace mucho tiempo, pero estoy bastante seguro de que la API de StoreKit no existía en aquel entonces. – pms1969
Esto funciona. No uso el mismo código, pero la idea de leer el código de moneda de iTunes Store de 'product.priceLocale' definitivamente funciona. – cheeesus
Gracias - esto funciona. –