← Writing
光合制梦

切换 App Store 地区为什么并不总是有效?

01 当我切换了 App Store,却依然被拒之门外

前几天收到一个 App 的内测邀请,挺激动的。

去群里打开 ta 们分享的 TestFlight 链接,下载,注册账号…然后,傻眼了:我搜不到其他的用户,整个 App 也空荡荡的。

去问对接我的伙伴,对方说,这个 App 目前只开放了中国区测试。哦,对,我的手机是美区 ID。

那简单,切回国区重新下载就好了。于是我删掉了 App,去设置里把 App Store 切换到中国区,切换了网络,重新下载。登录我之前注册的账号,满心期待地打开…还是搜不到其他已注册用户。

我又想,是不是因为 TestFlight 的原因?因为是从美区下载的。

好,这次我把 App 和 TestFlight 都卸载了——还是一样的结果。而且我注意到,这几次下载下来的 App,无一例外都是国际版。

我就不理解了,明明已经把 App Store 切回中国区了呀,为什么下载的还是国际版?

02 我想起了 Canva

这让我想起很久以前的一段记忆。好像是 2021 年还是 2022 年?那时候 Canva 有个很神奇的功能。

如果用户在 App Store 下载了 Canva,然后去手机的「设置」找到「Canva」,里面有个选项,可以让用户切换「Global」和「China」版本。是的,同一个 App,可以在系统设置里直接切换连接的服务器。

当时我觉得,哇,这个设计好惊喜啊。既满足了不同地区的用户需求,又不用分别上架两个 App。

但后来,这个功能消失了。我不确定是什么时候消失的,可能是 2023 年?也可能更早。总之,现在我去看 Canva 的设置,已经没有这个选项了。

我以为,是我记错了?再加上遇到这个内测 App 的问题,我突然意识到——也许我没记错。甚至,Canva 那个功能的「消失」,和我现在遇到的「切换 App Store 地区下载的还是同一个 App 版本」——背后可能有关联。

03 TestFlight 到底是怎么运作的?

我就自己遇到的问题联系了开发团队,收到的回复让我感觉,他们也不太清楚为什么会是这样。也是,或许这是他们第一次做 App,内测也才刚开始。

所以我决定自己去找答案。查了一些资料之后发现,TestFlight 和 App Store 的分发机制完全不一样。

- App Store(正式版):有不同的「商店前台」(Storefront)。用户切换 App Store 设置相当于访问不同国家的商店。比如醒图,国区下载是一个版本,美区下载是另一个版本。

- TestFlight(测试版):它本身不像 App Store 那样有不同的「商店前台」,开发者可以选择限制哪些地区的 Apple ID 能下载 Beta 版,但不是所有开发者都会设置这个限制——如果没设限,全球任何 Apple ID 都能下载。

我遇到的这个 App,显然就是没设下载限制。所以,当我切换 App Store 设置时:

- 对正式版 App 有用(醒图可以切换地区版本)

- 对 TestFlight 无用(它根本不按「商店前台」分发)

这就是为什么我切换了 App Store,重新下载,拿到的还是同一个版本。因为 TestFlight 本来就只有一个版本,全球统一。

那它到底如何运作?

既然我能成功下载,那为什么用不了这个 App?答案是:限制来源不是 TestFlight,而是在 App 内部。

开发者在 App 启动时,会检测用户的 Apple ID 注册地,然后连接到不同的后端服务器。下面可以用一段代码解释:

JavaScript

const AppleID_region = getUserAppleIDRegion()

if (AppleID_region === 'CN') {

// 连接国区后端(有数据)

backend = 'api-cn.App.com'

} else {

// 连接国际后端(空数据)

backend = 'api-global.App.com'

}

意思是,如果检测到用户的 Apple ID 是中国区,则连接国区数据库;否则,连接国际区数据库——而这两个数据库是隔离的。

我的 Apple ID 注册地是美国,所以我连的是美区后端。 而开发者说他们「只开放了中国区内测」——意思应该是,只有中国区后端有真实的用户数据。美区后端要么是空的,要么只是个测试环境,没有任何用户注册在里面。

这也就是为什么,无论我怎么切换 App Store 设置,App 检测到的永远是「这是个美国用户」,然后把我导向一个空的数据库——我当然搜不到任何人。

04 Canva「消失的功能」与监管套利

现在回头看 Canva,我明白了那个功能为什么会消失(一种猜测)。

在 2020-2022 年那段时间,监管还没有现在这么严格。 Canva 可以利用一个「灰色地带」: 同一个 App,通过后端切换服务器,既满足中国用户需求,又避开了完全本地化的成本——Regulatory Arbitrage (监管套利),利用后端路由,让数据在灰色地带流动。

但 2022 年之后,《数据出境安全评估办法》开始施行,App Store 中国区对「数据本地化」的要求也越来越严格。Canva 被迫做出选择,要么完全拆分成两个独立的 App(成本太高);要么移除切换功能,强制根据用户的 Apple ID 区域进行分区——他们选了后者。

所以,那个「消失的功能」,真的存在过。只是,窗口期关闭了。

05 身份碎片化

这个经历让我意识到一件事。在移动互联网时代,「身份」是多层叠加的。App Store 设置、Apple ID 注册地、设备语言、网络 IP、登录方式…每一个都是一个 Identity Layer (身份层)。

当这些层对不上时,就有可能会出现各种莫名其妙的问题。我这次遇到的,只是其中一种情况。但其实,这样的例子挺常见的。

- 有人在国外留学,用当地的 Apple ID 下载了某些 App,回国后发现用不了(整体或部分)。

- 还有人因为工作原因频繁在中美两地切换,结果某些订阅服务一会儿能用,一会儿不能用。

开发者为了合规,只能用粗暴的 Hard-coding (硬编码)来切割用户。而我们这些流动的、跨文化的、拥有多重身份的用户,就成了 UX Friction (用户体验摩擦)的牺牲品,只能在这些被代码隔离的「数字领地」之间,小心翼翼地切换身份。

06 为什么切换 Apple ID 那么难?

有人可能会问:「那你直接把 Apple ID 改成中国区不就好了?」理论上可以。但切换 Apple ID 的注册地,需要满足:

- 取消所有订阅

- 账户余额归零

- 等待所有待处理的交易完成

- 准备好新地区的付款方式

而且,切换地区后会影响很多东西:

- iCloud 数据可能需要迁移

- 某些 App 可能会消失(区域限制)

- Wallet 里的卡可能失效

我的 ID 里有订阅、有余额,而且 Wallet 里还有几张卡,银行卡可以解绑后重新绑定,但其他国家的交通卡(还有余额)估计无法转移。我不可能为了测试一个 App,去冒这个险(我也不确定,退出这个 ID 后再重新登录…会是什么模样 🤔)。

所以,我对于那个 App 的探索就停在这里了。

07 写在最后

现在的互联网,数字围墙越砌越高,俨然一个个相互隔离的「数字领地」。

就像我在这篇文章提到的,我根本没见过也不知道原来还有维吾尔族语母语者的博主——当然,这是发生在区域内部不同民族之间的数字隔离,前文我尝试讨论的一直是以国家为单位的数字分区。

算了,这也不是我现在该操心的事。但我还是想知道:面对这个死循环,除了借个手机,真的没有更优解了吗?

…就说吧,本来只是内测个 App,结果我写了两千多字的文章——背后的道道还是挺厉害的哈。

P.S. 如果我是这个 App 的 PM

既然抛出了问题,我也尝试给一个解法。

如果不考虑极端的合规限制(比如必须强制实名认证),仅仅是为了解决「数据隔离导致的体验黑洞」。我会做一个「Explicit Context Switch」 (显性语境切换)的设计。

现在的逻辑太「隐性」了——系统自以为聪明地帮我做了决定。

更好的做法是:把选择权还给用户。

在登录页面,如果后端通过 API 检测到我的物理 IP (China) 和 Apple ID Region (US) 不一致,不要默默地把我导向美区荒原。而是弹出一个简单的 Prompt (提示):

「检测到您当前位于中国,但使用的是美区账号。本应用数据分区存储,是否切换至中国区服务器以获取完整体验?(注:不同区域数据不互通)」

或者,最简单的,在登录页右上角放一个不起眼的 Region Selector (地区选择器)。

这就是「Transparency reduces Friction (透明度降低摩擦)」:哪怕数据库必须物理隔离,哪怕我必须重新注册一个号,至少要让我知道「Why」。

这样,用户就不需要像个无头苍蝇一样,反复猜测、卸载、重装,浪费原本可以用来体验产品的宝贵时间。

(事实上,游戏应用方面已经在这么做了,比如同地区分服,或者不同地区分区。)

输入文字,搜索文章和 Voice Notes。