iOS iTunes 商店国家

Posted

技术标签:

【中文标题】iOS iTunes 商店国家【英文标题】:iOS iTunes store country 【发布时间】:2012-07-25 02:22:28 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

如果您有任何可用的应用内购买,您可以从 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【参考方案2】:

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

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

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

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

【讨论】:

【参考方案3】:

无法检查应用下载了“哪个”App Store。

如果您需要基于位置执行任何操作,您应该查看CLLocation 以获取用户的当前位置,但是如果应用程序不明确为什么需要向用户询问他们的位置,这似乎是一种干扰地点。

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

【讨论】:

【参考方案4】:

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.)

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

【讨论】:

以上是关于iOS iTunes 商店国家的主要内容,如果未能解决你的问题,请参考以下文章

如何将我在 iTunes 中的应用更改为我所在国家/地区的特定连接?

上传 iOS 应用程序时,应用程序加载器卡在“使用 iTunes 商店进行身份验证”

申请已批准 - 待定开发者版本 - 您所在的国家/地区目前无

如何获取从应用商店和 iTunes 连接中删除的 iOS 应用捆绑 ID?

iOS 应用无法通过应用商店中的搜索找到,但可以通过带有应用 ID 的 iTune 链接形式找到

在 InAppBillingPlugin for Xamarin 之后,应用内购买无法连接到 iTunes 商店 ios 12