How to detect the active iTunes store on the iPhone/iPod Touch/iPad?

前端 未结 7 764
你的背包
你的背包 2020-12-07 23:29

I\'d like to be able to determine which store the user connects to from inside my app, so that I can direct them to some appropriate content for their device AND store. Doe

7条回答
  •  余生分开走
    2020-12-07 23:48

    The approach of getting the country code of the user's locale will work ... but only if the user's iTunes store is the same as their locale. This won't always be the case.

    If you create an in-app purchase item, you can use Apple's StoreKit APIs to find out the user's actual iTunes country even if it's different from their device locale. Here's some code that worked for me:

    - (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];
    }
    

提交回复
热议问题