Der Ansatz, den Ländercode des Gebietsschema des Benutzers immer funktioniert ... aber nur, wenn der iTunes Store Benutzer das gleiche wie ihre locale ist. Dies wird nicht immer der Fall sein.
Wenn Sie ein In-App-Kaufelement erstellen, können Sie die StoreKit-APIs von Apple verwenden, um das tatsächliche iTunes-Land des Benutzers zu ermitteln, auch wenn es sich von der Ländereinstellung des Geräts unterscheidet. Hier einige Code, der für mich gearbeitet:
- (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];
}
Ein bisschen spät auf die Party für mich, und ich werde keine Chance haben, dies jetzt selbst zu verwenden. Wenn jemand anderes verifiziert, dass dies tatsächlich funktioniert, und Sie einige Up-Stimmen erhalten können, werde ich dies als die Antwort markieren. Es ist schon lange her, aber ich bin ziemlich sicher, dass die StoreKit API damals nicht da war. – pms1969
Das funktioniert. Ich benutze nicht denselben Code, aber die Idee, den Währungscode des iTunes Stores aus 'product.priceLocale' zu lesen, funktioniert definitiv. – cheeesus
Danke - das funktioniert. –