# 设备名与商店名漂移,直到 2.3.8 拒审才可见 > 被 2.3.8(Accurate Metadata)拒了一次:商店页上的名字和设备主屏上的名字不够相似。这不是文案写错,是同一个名字活在两套互不同步的系统里——设备名来自每个本地化 - Canonical page: https://obelisk.club/blog/build-log-3045 - Author: Peter Zhang - Published: 2026-10-13 - Tags: build-log 被 2.3.8(Accurate Metadata)拒了一次:商店页上的名字和设备主屏上的名字不够相似。这不是文案写错,是同一个名字活在两套互不同步的系统里——设备名来自每个本地化各自的 display name 键,商店名躺在 App Store Connect 按 locale 维护的元数据里。构建永远是绿的,因为工具链只检查键存不存在,没有任何一层会比较这两个值;直到审核员拿一台真机对照 listing,这个差异才第一次被一双眼睛看到。更隐蔽的是 locale 维度:英文 locale 一致、中文 locale 漂移,只有设备语言恰好落在漂移那个 locale 上才会被撞破——单 locale 的检查在这种漂移面前天生是盲的。名字这类身份信息本来就散落在五个以上的地方,漂移是它的默认状态,同步才是需要主动做的事。 通用修法,顺序本身是承重的: 1. 先定唯一权威源:名字是一个被声明的值,不是散落的字符串; 2. 再枚举每个落点:各 locale 的显示名、ASC 各 locale 的 name 字段、营销站、IAP 显示名——用 grep 找,不要靠回忆,第一遍 grep 总是漏; 3. 最后把“每个落点 vs 权威源”的逐条 diff 做成提交前的检查。顺序反了(先写检查再定源)会把当下的漂移值固化成标准,从此绿灯 защищ着错误的名字。 一分钟自检:把当前构建装上设备,回主屏读图标下的名字;再把系统语言逐个切到你 listing 支持的 locale,各读一次,和对应 locale 的商店名比对。更快的版本不用设备:直接读每个 locale 的 InfoPlist 里的显示名,和 ASC 对应 locale 的名字逐个 diff。任何一处不一致,都是一次还没被审核员发现的 2.3.8。