Как обнаружить активный магазин iTunes на iPhone / iPod Touch / iPad? - PullRequest
21 голосов
/ 29 марта 2010

Я бы хотел иметь возможность определить, к какому хранилищу подключается пользователь из моего приложения, чтобы я мог направить их к некоторому подходящему контенту для своего устройства И хранилища. Кто-нибудь знает, как получить эту информацию?

Обычно, если пользователь находится в Великобритании и подключается к магазину в Великобритании, я хочу, чтобы моя функция / метод возвращала ГБ, если в Корее я хочу, чтобы KR, Австралия = AU и т. Д. Любая помощь была бы признательна.

Ответы [ 5 ]

33 голосов
/ 09 марта 2012

Подход к получению кода страны для локали пользователя будет работать ... но только в том случае, если магазин iTunes пользователя совпадает с его локалью. Это не всегда так.

Если вы создаете покупку внутри приложения, вы можете использовать API Apple StoreKit, чтобы узнать реальную страну пользователя iTunes, даже если она отличается от локали устройства. Вот код, который работал для меня:

- (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];
}
0 голосов
/ 14 апреля 2010

Мне нужна такая же функциональность. В данный момент я рассматриваю чтение с использованием данных из NSLocale по умолчанию, но добавляю параметр в settings.app, чтобы пользователь мог настроить его, если он не соответствует.

Эта функция взята из ответа на другой мой вопрос .

- (NSString *)getUserCountry
{
    NSLocale *locale = [NSLocale currentLocale];
    return [locale objectForKey: NSLocaleCountryCode];
}
0 голосов
/ 05 апреля 2010

Вы, вероятно, должны использовать

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

Это вернет код языка, например en_US или en_UK или en_AU или даже zh_CN, zh_MY, jp_JP и т. Д.

Разберите правильные коды, которые вы поддерживаете, и направьте их соответствующим образом.

0 голосов
/ 12 апреля 2010

Я предлагаю вам попробовать iTunes глубокие ссылки . Например, http://itunes.com/apps/appname должен привести пользователя в местный магазин приложений, где он тратит деньги.

0 голосов
/ 29 марта 2010

Сложный способ получить эту функцию - настроить отдельное приложение для каждой страны в магазине приложений. Каждое приложение содержит информацию о своем магазине в стране. Это предполагает, что пользователь придерживается одного магазина, что должно быть правдой для большинства людей.

...