19

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

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

有人知道如何解决这个问题吗?

4

4 回答 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);
于 2013-12-09T06:34:06.627 回答
3

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

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

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

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

于 2012-07-26T13:31:03.203 回答
0

无法检查应用下载了“哪个”应用商店。

如果您需要做任何基于位置的操作,您应该查看CLLocation以获取用户的当前位置,但是如果应用程序不清楚为什么需要该位置,则询问用户他们的位置可能会显得很麻烦。

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

于 2012-07-26T13:29:41.563 回答
0

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

迅速

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

对象 C

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

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

于 2020-08-28T08:59:19.133 回答