2010-03-29 5 views
21

사용자가 내 앱에서 어떤 스토어에 연결할 것인지 결정할 수 있기를 바란다. 그래서 나는 그들에게 디바이스와 스토어를위한 적절한 컨텐츠를 안내 할 수있다. 누구든지이 정보를 얻는 방법을 알고 있습니까?iPhone/iPod Touch/iPad에서 활성 iTunes 저장소를 검색하는 방법은 무엇입니까?

기본적으로 사용자가 영국에 있고 영국 상점에 연결하는 경우 내 기능/방법으로 GB를 반환하고 한국인 경우 KR, 오스트레일리아 = AU 등을 원합니다. 도움이 필요합니다.

답변

33

사용자 로캘의 국가 코드를 가져 오는 방법은 작동하지만 사용자의 iTunes 저장소가 해당 로캘과 동일한 경우에만 작동합니다. 항상 그런 것은 아닙니다.

인앱 구매 항목을 만드는 경우 Apple StoreKit API를 사용하여 사용자의 실제 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]; 
} 
+1

나에게 조금 늦은 파티이고, 나 자신을 지금 사용할 기회가 없을 것이다. 다른 사람이 이것이 실제로 작동하는지 확인한 다음 투표를 통해 투표를 얻을 수 있다면 답변으로 다시 표시하겠습니다. 오래 전 이었지만 지금은 StoreKit API가 그 당시에는 없었다고 확신합니다. – pms1969

+0

이것은 작동합니다. 나는 같은 코드를 사용하지 않지만,'product.priceLocale'에서 iTunes Store 통화 코드를 읽는 아이디어는 확실히 작동합니다. – cheeesus

+0

감사합니다.이 방법이 효과적입니다. –

0

이 기능을 얻으려면 앱 스토어마다 하나의 앱을 설정하는 것이 좋습니다. 각 앱에는 자체 스토어 정보가 있습니다. 이는 사용자가 한 상점에 ​​집중한다는 가정으로 대부분의 사람들에게 해당됩니다.

+0

실제로 해결책을 찾지 못했지만 구속력이 있지만 그렇게 할 것입니다. 더 쉬운 방법이있을 것이라고 확신합니다. 나는 그것이 무엇인지 모릅니다. – pms1969

-3

당신은 아마

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

이 등등 ko 페이지 또는 ko 페이지 또는 EN_AU 또는 zh_CN으로, zh_MY, jp_JP와 같은 언어 코드를 반환합니다 사용해야합니다.

지원하는 올바른 코드를 구문 분석하고 적절하게 지시하십시오.

+0

Mugunth에게 감사하지만, 로케일과 상점이 반드시 같은 것으로 간주되는 것은 아닙니다. 나는 사용자가 지시 한 가게를 알아내는 우아한 방법이 필요하다. I.E. 어떤 가게에서 그들은 돈을 씁니 까. NSAppStore에 대한 사용자 정의 기본값이 있다고 가정하지 마십시오. – pms1969

+0

사용자의 iTunes Store의 로케일을 제공하지 않기 때문에 투표가 중단되었습니다. –

0

iTunes deep links을 사용해 보시기 바랍니다. 예를 들어 http://itunes.com/apps/appname은 사용자가 돈을 쓰는 지역 앱 스토어로 이동해야합니다.

+1

괜찮지 만 상점이 무엇인지 어떻게 알 수 있습니까? 예를 들어 "App Store is ..."와 같은 것을 표시 할 수 있습니다. – pms1969

+0

@Costique, 답변의 첫 번째 링크가 작동하지 않습니다. – kelin

1

동일한 기능이 필요합니다. 현재로서는 기본적으로 NSLocale의 데이터를 사용하여 읽기를 고려하고 있지만 일치하지 않는 경우이를 사용자 정의하기 위해 settings.app에 설정을 추가합니다.

이 기능은 an answer to another question of mine에서 가져옵니다.

- (NSString *)getUserCountry 
{ 
    NSLocale *locale = [NSLocale currentLocale]; 
    return [locale objectForKey: NSLocaleCountryCode]; 
} 
+3

너무 생각해. 그러나 나는 특히 그런 생각을별로 좋아하지 않습니다. 예를 들어, 당신은 로케일이 그들이 사용하는 상점과 완전히 다를 수도있는, 자연스럽게 스페인어로 말하는 사람들이 많이 있습니다. 나는 내가 나 자신에 대한 대답에 가깝다고 생각한다. – pms1969

+1

내 질문 중 하나에 대한이 대답이 도움이 될 것으로 생각했습니다. http://stackoverflow.com/questions/2639684/itunes-music-store-link-maker-how-to-search-from-within-my-app/2668190 # 2668190 ThierryB의'getUserCountry' 메소드는 언어가 설정된 것과 상관없이 미국에있는 사용자에게 미국을 반환하지 않습니까? – prendio2

+0

감사합니다. 일찍 시도했지만 예상대로 작동하지 않거나 잘못된 결과를 반환했습니다. 그런데, 나는 실제로 시뮬레이터에서 해보았 던 것을 전화로 해본 것을 기억할 수 없다. 그래서 나는 빌어 먹을 프로비저닝 프로파일을 정리하고 전화로 다시 디버깅 할 수있을 것이다. – pms1969

관련 문제