【问题标题】:App with different functionality based on the user's country根据用户所在国家/地区具有不同功能的应用程序
【发布时间】:2012-10-20 22:12:27
【问题描述】:

我需要开发一个应用程序,该应用程序的行为会因用户所在的国家/地区而异。比方说,如果用户在法国,一些功能将可用。但是,如果用户来自印度,他将能够访问一组不同的功能。

如果只是基于语言的限制,我可以使用 NSLocale 类方法来切换功能。但由于许可和法律原因,我的功能实际上取决于用户所在的国家/地区。

处理这种情况的最佳做法是什么?

【问题讨论】:

  • 为什么不从语言环境中检索国家代码?
  • 嗨热舔,感谢您的建议。我看到使用区域设置的问题是用户可以从设备的设置屏幕更改他的区域设置。我需要确定他来自哪个国家。更好的是,我需要知道他来自哪个 IOS App Store 国家/地区。
  • 你能问用户他/她来自哪个国家吗?

标签: iphone ios ipad cocoa internationalization


【解决方案1】:

第 3 方应用程序无权访问有关设备用户的任何信息或访问 iTunes 帐户。没有办法知道用户的真实国家。在任何给定时间,该设备甚至可能不与任何一个人相关联。例如,iPod touch 可能没有用户登录任何 iTunes 帐户。同一台设备最终可以登录到多个不同帐户之一。

您只能访问用户当前的 GPS 位置(如果用户允许您的应用访问该信息)或他们当前的区域设置。

基本上,没有办法做你需要的。当然你可以提示用户,但显然没有办法验证这些信息。

【讨论】:

  • 是的,理论上你可以使用 GPS,但它需要一个详细的边界数据库。
  • @HotLicks 您实际上可以通过 SDK (MKReverseGeocoder) 从 GPS 获取国家/地区。真正的问题是用户必须允许它。
【解决方案2】:

对于由于特定市场许可或法律问题而有特定要求的每个市场,您可以在 iTunes Connect 中创建单独的应用程序,并使其仅在相关市场中可供下载。如果您需要,这还允许您提供特定于市场的 EULA。这是一个很大的维护负担,但它可以确保只有特定市场中的用户才能访问该应用程序。

请注意,在 XCode 中,您可以相当轻松地构建、部署和发布从不同配置构建的项目的多个版本(XCode 称之为“目标”),因此您仍然可以通过简单地添加一些预处理器定义在单个代码库中实现这一点在相关的目标定义中,并将#ifdef 放在您想要区分逻辑的代码中。

【讨论】:

    猜你喜欢
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多