【问题标题】:Detect at runtime which country's App Store my iPhone app was downloaded from?在运行时检测我的 iPhone 应用是从哪个国家的 App Store 下载的?
【发布时间】:2012-04-17 15:02:03
【问题描述】:

我的 iPhone 应用程序中有一项功能,出于商业原因,该功能应仅向美国客户显示/可用。如果我想将此应用发布到美国以外的 App Store,在不依赖用户定义的设置(例如语言和区域设置)的情况下,确定我所在国家/地区的最佳方法是什么?

在我看来,理想的解决方案是有一些运行时属性可以告诉我该应用是从哪个 App Store 国家/地区下载的,我可以采取相应的行动。浏览文档并搜索网络,我在这个部门没有任何想法。

我不希望解决方案是 100% 万无一失的,只要用户不在他们所说的国家/地区,但越接近越好。

我想一种解决方案是为 App Store 上的新产品单独构建一个版本,并有两个版本,一个用于美国,一个用于其他版本,但这似乎并不理想。我希望它可以是 App Store 上的同一产品,以防止用户评论碎片化之类的事情。

提前致谢!

【问题讨论】:

  • 嗨,你有没有找到一个优雅的解决方案?我们处于相同的情况,但每个国家/地区的代码中都有不同的分支,扩展性不是很好。
  • 不,但我们最终不需要担心这个。不确定去年是否有任何变化。
  • 用户评论、评分和排名已经按商店(国家)分散。因此,只需发布​​ 2 个应用程序,一个具有美国功能,一个不用于其他商店。
  • 09 年有人问过这个问题,但是 7 年后的 16 年我们有什么解决方案吗?
  • 现在是 2018 年,我们仍然没有任何解决方案?

标签: iphone localization internationalization app-store


【解决方案1】:

可以是区域设置,也可以是针对不同商店的不同版本。

对我来说,Locale 选项似乎是最少的工作量,并且可能 95% 的时间都是正确的...

【讨论】:

  • 某些国家或地区可能不允许某些东西,因此AppleID的地区和用户设置的区域设置都很重要。
【解决方案2】:

我还认为使用 NSLocale 将是确定用户所在国家/地区的最佳解决方案。

这是如何完成的:

// Get user's country code based on currentLocale
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];

if ([countryCode isEqualToString:@"US"]){
    // US Only
}

但是,由于无法保证用户不会更改其国际设置,因此您可能别无选择,只能发布单独的应用程序,一个面向美国受众,另一个面向国际受众。

【讨论】:

    【解决方案3】:

    这个问题很老了,但由于其他人可能有相同的查询,我正在参与:) 鉴于除了通过本地检索之外它不是“明智的”可能的,一种机制是通过客户注册。在注册表中,您可以询问他们注册的国家/地区并从那里获取...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-22
      • 2013-04-19
      • 1970-01-01
      • 2014-07-15
      • 2013-07-05
      • 2014-12-10
      • 1970-01-01
      • 2013-07-31
      相关资源
      最近更新 更多