iOS iTunes商店国家/地区

时间:2012-07-26 13:24:04

标签: iphone ios itunes country

我想知道是否有解决方案可以找出用户下载应用程序的国家/地区。

例如:当用户打开应用程序时,app x已在美国下载,应用程序将检查下载的国家/地区。在此示例中,返回将是“USA”

有没有人想过如何解决这个问题?

4 个答案:

答案 0 :(得分:8)

如果您有任何应用内购买,您可以从SKProduct中读取区域设置。作为后备,请使用设备的区域设置。

NSLocale *locale;
SKProduct *baseProduct = nil; // replace as applicable
if (baseProduct) {
    locale = baseProduct.priceLocale; // from the user's credit card on iTunes
} else {
    locale = [NSLocale currentLocale]; // from user preferences
}
NSString *countryCode = [locale objectForKey:NSLocaleCountryCode];
NSLog(@"Two-letter country code: %@", countryCode);

答案 1 :(得分:3)

iTunes商店所在国家/地区与用户设置的区域设置之间可能存在足够的相关性。这取决于您的需求 - 如果这还不够,我认为没有办法知道从哪个实际商店下载应用程序。

要检索该区域设置,您可以使用:

NSString *localeIdentifier = [[NSLocale currentLocale] localeIdentifier];

希望这足以满足您的需求。

答案 2 :(得分:0)

无法检查应用程序的“哪个”App Store已下载。

如果你需要做任何基于位置的操作,你应该查看CLLocation以获取用户的当前位置,但是如果应用程序询问用户他们的位置可能会有什么干扰,如果它不明显为什么呢需要这个位置。

您还可以检查用户设备上的语言,例如en_gb for Britain,dk for Denmark,en_ca for Canada等。虽然这并不能完全涵盖某些国家/地区的用户将语言设置为其他语言的情况比起国家的母语,它总比没有好。

答案 3 :(得分:0)

在iOS 13 SDK中引入的

SKStoreFront似乎可以胜任。

快速

if let storefront = SKPaymentQueue.default().storefront {
    print(storefront.countryCode) // Returns an Alpha-3 country code (USA, GBR etc.)
}

Obj C

[SKPaymentQueue defaultQueue].storefront.countryCode; // Returns an Alpha-3 country code (USA, GBR etc.)

即使您的应用程序不提供任何购买,您也应该可以通过将StoreKit框架添加到项目中来访问SKStoreFront实例。