iOS iTunes商店国家

19

我想知道是否有解决方法可以找出用户下载应用的国家。

例如:当用户打开应用程序时,应用程序将检查其在哪个国家被下载。 在此示例中,返回结果将是“美国”。

有没有人有解决这个问题的想法?

4个回答

10
如果您有任何应用内购买可用,则可以从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);

我认为我们可以直接使用 [NSLocale currentLocale].countryCode - Kjuly

3

在iTunes商店国家和用户设置的语言环境之间可能存在足够好的相关性。这取决于您的需求 - 如果这不够,请注意,没有办法知道应用程序实际下载自哪个商店。

要检索该语言环境,您可以使用:

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

希望这样就可以满足你的需求了。

0

无法检查应用程序是从哪个应用商店下载的。

如果您需要进行任何基于位置的操作,您应该查看CLLocation以获取用户的当前位置,但是如果应用程序没有明确说明为什么需要位置信息,请求用户提供位置信息可能会显得有些突兀。

您还可以检查用户设备上的语言,例如英国的en_gb,丹麦的dk,加拿大的en_ca等。虽然这并不能完全覆盖某些国家的人们将语言设置为非本国语言的情况,但总比没有好。


0

SKStoreFront,在iOS 13 SDK中引入,似乎可以完成这项工作。

Swift

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实例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接