We have an iOS App which has millions of users in the US and needs to be Internationalized and made available in 11 different countries (many with a different language). Have worked out all technical details for exposing hiding features as applicable to a particular country, and also the different currencies etc. We have also implemented a way for the app to get location (if it is switched on, otherwise request user for it) and based on that, to self-configure for the country/language.
We'd like to do this off one Code Base. Suppose this is currently at version 1 say. Suppose we start with adding 5 countries - i.e. US, plus Korea, Japan, France, Canada and Mexico. Say this is now version 2.
We will then deploy this (a single app with one bundle id) to the App store and set availability for this version (2) to USA, Korea, Japan, France, Canada and Mexico app stores.
Suppose in the next month we add a new feature and that becomes Version 3. We test this thoroughly for USA, but our QA team does not have time to test this for the other 5 countries. So we want to release this V3 only for the USA and set availability for the new version for just the USA.
From what I understand, with the way app store settings work, since we have the same bundle id, we cannot restrict the new V3 to the US alone. It will automatically get published to the app stores in Korea, Japan, France, Canada and Mexico as well.
Is there a way around this?
(the other approach I know is to use the same code base, but build separate targets with separate bundle ids for each country, and I would rather have everything based of one target)
答案 0 :(得分:1)
iTunes不支持仅针对特定区域启用新版本可用性,同时允许旧版本在其他区域中可用。他们这样做也是有充分理由的。
假设您支持英语和日语。你所说的是,由于你只能测试新版本的英文版本,你决定在除日本以外的所有地区推出它。
但如果在美国以英语作为设备语言工作的用户在假期回家几天就会怎么样呢。他的儿子使用这个家伙的手机玩游戏,将设备语言改为日语。现在,当您的应用程序执行时,最终用户是否会接触到未经测试的应用程序版本? 即使您没有根据操作系统的设置进行本地化并且在应用程序的设置面板中有单独的选项,用户也可以始终切换到可能未经测试的版本,从而导致糟糕的用户体验。
所以我认为你唯一的选择是: - 1.在发布之前测试所有语言的App。 2.如果应用程序中的功能根据区域的不同而有很大差异,请将类似区域分组并创建3-4个不同的应用程序(XYZApp-US,XYZApp-Europe等)。只有当您的功能在不同区域之间存在很大差异时,此选项才有意义(需要根据语言隐藏/修改许多功能)。这种方法不仅有助于根据QA覆盖率计算您的版本,还有助于隔离代码,因为只有相关的应用程序具有相关的功能代码。
选项1虽然看起来更容易。