Guideline 4.0 被拒:App 界面设计问题修复
作者:Mehdi Azizi
发布于 ,9分钟
Guideline 4.0 Design:Apple 拒绝它认为难以使用的界面,常见于 iPad。在 iPhone SE 和 iPad 上逐屏测试、修复,再回复审核。
“Guideline 4.0 - Design”和其他带编号的条款不一样:它是 Apple 审核规则中 Design 部分的引言,当你的界面看起来低于预期水准时就会被引用。公开出来的拒审案例都很相似:iPad 上界面拥挤,文字难以阅读,登录被跳转到 Safari,Sign in with Apple 集成不当。修复几乎总是从消息里提到的那台设备开始,一个屏幕一个屏幕地改。
我自己用 Expo 发布 iOS app:Solys、TradaZen 和 Nolera 都设置为仅支持 iPhone,可审核员还是在 iPad 上测试了 Solys 和 Nolera。这篇指南基于 Apple 的原文、其他开发者公开的 4.0 拒审案例,以及我每次提交前都会过一遍的视觉检查表。想了解拒审原因的全貌,可以看为什么 Apple 会拒绝你的 app。
Guideline 4.0 Design 涵盖什么?
App Review Guidelines 第 4 部分开头是一段没有编号的话:“Apple customers place a high value on products that are simple, refined, innovative, and easy to use, and that's what we want to see on the App Store.” 它还说,设计由你决定,但后面的条款规定了“minimum standards for approval”。它也提醒,一个 app 如果在通过审核后质量下降,可能会被下架。
说白了:Apple 期望的是简洁、精致、易用的 app,而 4.0 用在问题不属于任何具体子条款的时候。 原文没有给出量化标准。实际参考是 Human Interface Guidelines,也就是 Apple 的设计规范。
最常见的 4.0 拒审
下面是我在 Apple 论坛公开消息里找到的四种情况,附上 Apple 的原话。
| 情况 | Apple 的措辞 | 修复方法 |
|---|---|---|
| iPad 上界面拥挤 | “crowded” | 自适应布局 |
| 文字难以阅读 | “hard to read type” | 采用 HIG 字号 |
| 在 Safari 中登录 | “taken to Safari” | 在 app 内登录 |
| Sign in with Apple | 重复索要姓名 | 直接使用已提供的姓名 |
iPad 上界面拥挤或被截断
典型消息,发布于 2025 年 9 月:“Parts of the app's user interface were still crowded, laid out, or displayed in a way that made it difficult to use the app when reviewed on iPad Air (5th generation) running iPadOS 26.0.” 后文还指出,这个 app 只用了屏幕的一部分(论坛帖子)。
原因在于 2.4.1 条:“iPhone apps should run on iPad whenever possible.” 根据 Expo 的 app 配置文档,Expo 中 ios.supportsTablet 选项默认是 false。这时你的 iPhone app 会以兼容模式在 iPad 上运行,显示在一个 iPhone 尺寸的窗口里。把 app 设为仅支持 iPhone,并不能让它免于在 iPad 上被测试。 Solys 的演示就是在一台 iPad Air 上变得根本赢不了的,详细经过见 guideline 2.1 指南。
两条出路。要么真正支持 iPad,让布局随可用空间变化。Apple 的设计规范要求根据尺寸类别(size class)决定布局,而不是根据设备型号。要么继续只做 iPhone,那每个屏幕都必须在兼容窗口里正常显示。
文字难以阅读
消息发布于 2025 年 1 月:“Your app included hard to read type or typography.” Apple 在其中提醒,用户期望 app “simple, refined, and easy to use”(论坛帖子)。
Apple 的字体排版规范给出了 iOS 上的参考值:默认 17 点,最小 11 点。无障碍规范要求 17 点及以下的文字对比度至少 4.5:1,点击区域默认 44×44 点。
如果你像我一样在小屏幕上缩小字号,以保证各处换行一致,要注意一个坑:确认你最小的文字在 iPhone SE 上缩小后仍不低于 11 点。
登录被跳转到 Safari
消息发布在 Apple 论坛上:“We noticed that the user is taken to Safari to sign in or register for an account, which provides a poor user experience.” Apple 要求在 app 内完成注册和登录,并建议使用内嵌的 Safari 视图。
在 Expo 中,expo-web-browser 能在不离开 app 的前提下满足这两个需求:openAuthSessionAsync 在模态窗口中打开认证会话,openBrowserAsync 在内嵌 Safari 视图中显示网页。反过来,用 Linking.openURL 打开登录页会跳到 Safari app。至于该提供哪些登录方式,那属于另一条规则 4.8。
Sign in with Apple 集成不当
消息发布于 2024 年 5 月:“Your app requires users to provide their name after using Sign in with Apple. This information is already provided by the Authentication Services framework.”(论坛帖子)。
expo-apple-authentication 的文档讲清了这个坑:姓名和邮箱只会在第一次登录时提供。马上把它们保存下来,否则你就会想再问用户要一遍。另外要用库自带的按钮:颜色通过 buttonStyle 设置,圆角通过 cornerRadius 设置,绝不要用 style。
4.0、4.2、4.3:三种别搞混的设计类拒审
| 条款 | 审查对象 | 修复方法 |
|---|---|---|
| 4.0 | 界面 | 修改屏幕 |
| 4.2 | app 的实用性 | 增加原生内容 |
| 4.3 | 相似度 | 更换概念 |
4.2 Minimum Functionality 要求功能、内容和界面让 app 超越“beyond a repackaged website”的水平。它和 4.0 的界限很模糊:一个套壳网站可能两条都中。如果你的 app 缺乏实质内容,光改界面是不够的。
4.3 针对的是抄袭和饱和品类:我在 guideline 4.3 Design Spam 指南里详细讲了它的两款内容。界面再精致,也救不了一个和成千上万个 app 长得一样的 app。
提交前的视觉检查表
这是我每次提交都会加上的环节。在我的 app 里,每个屏幕都按最大的 iPhone 设计,然后在小屏上整体按同一比例缩小:比例相同,换行相同。之后我把各个渲染结果并排比较:iPhone SE、标准尺寸 iPhone、最大的 iPhone,再加一台 iPad 看兼容模式。
| 检查项 | 设备 | 必须达到 |
|---|---|---|
| 首次启动 | iPhone SE | 没有任何内容被截断 |
| 完整引导流程 | iPad | 每个按钮都能点到 |
| 键盘弹出 | iPhone SE | 输入框和按钮可见 |
| 放大文字 | 标准 iPhone | 没有文字被截断 |
| 深色模式 | 全部 | 所有文字都清晰可读 |
| 安全区域 | 最大尺寸 | Dynamic Island 下没有内容 |
| 付费墙 | iPhone SE | 价格和链接可见 |
| 登录 | iPad | 始终留在 app 内 |
三点说明:
- 放大文字。 Apple 的字体排版规范提供了一个简单的测试:在 Settings、Accessibility、Display & Text Size 中开启最大的文字尺寸,然后检查一切是否依然清晰可读。
- 深色模式。 Apple 关于深色模式的规范要求 app 在两种外观下都清晰可读。如果你不设置
userInterfaceStyle,Expo 默认使用light。Solys 跟随手机设置,TradaZen 固定深色,Nolera 固定浅色:三种情况下,我都会测试实际显示的外观。 - 安全区域。 内容既不能被 Dynamic Island 遮住,也不能被主屏幕指示条遮住。Expo 在它的安全区域指南里讲了具体方法。
在 Mac 上,模拟器可以用命令行设置,所以这套检查表能很快重跑一遍:
xcrun simctl ui booted appearance dark
xcrun simctl ui booted content_size accessibility-extra-extra-extra-large
xcrun simctl io booted screenshot ecran-se-sombre.png
在真机上,我会用一个 TestFlight 构建再走一遍同样的流程。方法说明:这套检查表是我自己的,基于我的 app 遇到过的拒审整理而成,不是 Apple 提供的清单。它能减少意外,但不能保证通过。
怎样回复 4.0 拒审?
- 找出消息里提到的设备和系统版本,然后在模拟器里打开同一型号。
- 修复所有出现问题的地方。 典型消息要求“address all instances”,而不只是截图里那个屏幕。
- 提交新的构建:审核员测试的是打包进 app 的代码。
- 附上截图回复,截图要在同一设备上拍,通过回复 App Review 消息提交。
- 只有在确定无误时才申诉:Apple 允许你向 App Review Board 申诉,每次被拒的提交只能申诉一次。
我会用的模板,按需修改:
Hello,
Thank you for your feedback regarding Guideline 4.0.
We reproduced the issue on [device] running [OS version].
Changes in build [X]:
- [Screen]: [what was crowded or hard to read], now [fix].
- [Screen]: [fix].
We also checked every screen on iPhone SE, a standard
iPhone, the largest iPhone and iPad, with larger text
sizes and Dark Mode.
Attached: screenshots of the updated screens on [device].
Best regards,
准备一次不会因设计被拒的提交
Review Kit 包含我提交前用的检查清单(其中涵盖 iPad 相关的 2.4.1 条),以及会帮你审查项目的 Claude Code skills。如果你想要真人把关,跟我预约一小时:我们视频连线,在多种尺寸上打开你的屏幕。被拒后的完整处理流程见被 Apple 拒绝的 app 页面。
正在准备你的第一次发布?来做免费诊断:它会帮你理清步骤顺序,并把我的防 Apple 拒审清单发给你。
常见问题
拒审消息里的“Guideline 4.0 - Design”是什么意思?
Apple 认为你的界面低于预期水准,但不针对某个具体子条款:界面拥挤、文字难读、登录流程体验差。消息通常会写明使用的设备,并经常附上截图。
我的 app 设置为仅支持 iPhone,为什么 Apple 要在 iPad 上测试?
因为 2.4.1 条要求 iPhone app 尽可能能在 iPad 上运行。你的 app 会在 iPad 上以兼容模式打开,显示在 iPhone 尺寸的窗口里,每个屏幕都必须在其中保持可用。
4.0 拒审后需要提交新构建吗?
是的,大多数情况下都需要。审核员测试的是首次启动时打包进 app 的代码,远程推送的修复他可能看不到。我在 guideline 2.1 的指南里解释过这一点。
深色模式是通过审核的必要条件吗?
审核规则原文并没有强制要求。设计规范提到,用户期望 app 跟随他们的设置。如果你像 Expo 允许的那样强制浅色或深色,就测试这种外观。如果你跟随手机设置,就两种都测。
4.0 拒审可以申诉吗?
可以,如果你认为 app 符合规则,可以向 App Review Board 申诉。Apple 要求给出明确理由,每次被拒的提交只能申诉一次,并且要先回复审核方的信息请求。

