Jak wykryć aktywny sklep iTunes na iPhone / iPod Touch / iPad?

Chciałbym być w stanie określić, do którego sklepu użytkownik łączy się z poziomu mojej aplikacji, aby móc skierować go do odpowiedniej treści dla swojego urządzenia i sklepu. Czy ktoś wie jak zdobyć te informacje?

Zasadniczo, jeśli użytkownik jest w Wielkiej Brytanii i łączy się ze sklepem w Wielkiej Brytanii, chcę, aby moja funkcja / metoda zwróciła GB, jeśli w Korei, chcę KR , Australia = AU itp. Każda pomoc będzie mile widziana.

Author: pms1969, 2010-03-29

5 answers

Podejście do uzyskania kodu kraju w ustawieniach regionalnych użytkownika będzie działać ... ale tylko wtedy, gdy iTunes store użytkownika jest taki sam jak jego ustawienia regionalne. Nie zawsze tak będzie.

Jeśli utworzysz element zakupu w aplikacji, możesz użyć interfejsów API StoreKit firmy Apple, aby dowiedzieć się, jaki jest rzeczywisty kraj iTunes Użytkownika, nawet jeśli różni się on od ustawień regionalnych urządzenia. Oto jakiś kod, który mi zadziałał:
- (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];
}
 33
Author: arteku,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-08 22:16:54

Trudnym sposobem na uzyskanie tej funkcji jest skonfigurowanie jednej aplikacji dla każdego kraju app store. Każda aplikacja posiada własne informacje o sklepie krajowym. Zakłada to, że użytkownik trzyma się jednego sklepu, co powinno być prawdziwe dla większości ludzi.

 0
Author: alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-29 19:32:52

Proponuję spróbować iTunes deep links . Na przykład http://itunes.com/apps/appname powinna zabrać użytkownika do lokalnego App Store, gdzie wydaje pieniądze.

 0
Author: Costique,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-12 09:19:59

Potrzebuję tej samej funkcjonalności. W tej chwili rozważam czytanie za pomocą danych z NSLocale jako domyślne, ale dodanie ustawienia w Ustawieniach.aplikacja dla użytkownika, aby dostosować to, jeśli nie pasuje.

Ta funkcja jest wzięta z odpowiedzi na inne moje pytanie .

- (NSString *)getUserCountry
{
    NSLocale *locale = [NSLocale currentLocale];
    return [locale objectForKey: NSLocaleCountryCode];
}
 0
Author: prendio2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:47

Prawdopodobnie powinieneś użyć

[[userDefaults dictionaryRepresentation] objectForKey:@"NSLocaleCode"];

Zwróci kod języka, taki jak en_US lub en_UK lub en_AU, a nawet zh_CN, zh_MY, jp_JP i tak dalej.

Analizuj poprawne kody, które obsługujesz i kieruj je odpowiednio.

 -4
Author: Mugunth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-04 09:08:31