如何检测iPhone/iPod Touch/iPad上的活动iTunes商店?

pms*_*969 21 iphone itunes objective-c itunes-store

我希望能够确定用户从我的应用程序中连接到哪个商店,以便我可以将它们引导到他们的设备和商店的适当内容.有谁知道如何获取这些信息?

基本上,如果用户在英国,并连接到英国商店,我希望我的功能/方法返回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];
}
Run Code Online (Sandbox Code Playgroud)

  • 我们的经验是,Apple不会批准使用此技术来检测区域/区域但不向用户显示应用内购买的应用.如果您向用户显示应用内购买,并且**也想要检测区域/区域,那么这是一种有效的技术.Apple审核人员建议,如果您尝试根据区域限制应用程序的某些方面,则可以选择使用地理位置.但是,您需要获得Apple的批准才能使用它,因为它也违反了有关位置数据使用的审核指南. (3认同)