跳至内容
WebViewGold 从 Vibe Coding 到 App Store
中文
获取 WebViewGold

Claude Code + 设计

用 Claude Code 审查移动端界面:安全区域、点按区域,以及审核人员会注意到的细节

审核人员几秒钟内就会对一个封装的 Web 应用做出判断:内容藏在刘海下面、按钮小得点不中、点按输入框时页面自动放大。这些问题都不难修,只要给 Claude Code 一份检查清单和一种看到屏幕的方式,它就很擅长把它们找出来。本指南会设置一个审查子代理、一个截图循环、修复最终应收敛到的 CSS,以及对应的 WebViewGold 设置。

每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。

  • 审核通过保证 – 否则 14 天内退款
  • 无需编程
  • 一次性付费,免费更新
  • 7×24 小时人工支持
  • 2014 年起德国出品 · ISO 27001

审核人员在第一分钟里看到的东西

准则 4.0 要求应用精致、易用,而基于 Web 的应用还会因为“感觉像网站”在 4.2 下受到额外审视。触发这类意见的问题是可以预料的:页眉滑到状态栏或灵动岛下面,标签栏压在主屏幕指示条上,图标按钮小于 Apple 建议的 44 x 44 pt(Android Material 规范为 48 x 48 dp),在小屏 iPhone 上出现横向滚动,输入框因字号小于 16 px 而在获得焦点时自动放大,全高布局因 100vh 而跳动,以及只能靠悬停打开的菜单。审核人员还会在 iPad 上运行 iPhone 应用,所以在平板宽度下会崩坏的布局也会暴露出来。

每个问题都出在两个地方之一:您的 CSS,或者 WebView 外围的 WebViewGold 设置。准则 4.0 指南解释了拒审本身;本页讲的是如何赶在审核人员之前,用 Claude Code 找到并修复这些问题的根源。

Claude Code 做什么,您做什么

Claude Code

对照一份固定的检查清单阅读每个页面和组件,在手机和平板宽度下截图,以小步 commit 修复 CSS 和标记,并给您留下一个可复用的斜杠命令。

您

判断发现的问题(其中有些是误报),在设计上做取舍,并在 WebViewGold 项目中设置状态栏、底部栏和缩放选项。

一台真实的手机

证明截图无法证明的东西:真实 WebView 中的刘海、主屏幕指示条、键盘和缩放行为。

原生设置与您的 CSS

问题WebViewGold 设置在您的 Web 应用中
状态栏区域iOS:statusBarBackgroundColor、statusBarTextColor 及其深色模式变体,或者 transparentStatusBar 搭配设为 false 的 autoAdjustSafeAreaInsets。Android:TRANSPARENT_STATUS_BAR、blackStatusBarText仅当内容绘制在状态栏后面时:viewport-fit=cover 和 env(safe-area-inset-top)
主屏幕指示条iOS:bottombar、iPadBottombar、bottombarBackgroundColor(安全区域文档)在固定的底部栏上使用 env(safe-area-inset-bottom)
缩放iOS:preventZoom。Android:ENABLE_ZOOM,以及用于限制系统文字缩放的 MAX_TEXT_ZOOM输入框字号 16 px,不使用固定宽度
回弹和链接预览iOS:preventoverscroll(如果使用 pulltorefresh,请保持为 false)、disablecallout无
键盘遮挡输入框Android:INPUT_SCROLL_HELPER避免在表单上方使用固定页脚;把获得焦点的字段滚动到可见区域
屏幕方向iOS:orientationiphone、orientationipad。Android:PHONE_ORIENTATION、TABLET_ORIENTATION测试您允许的每一种方向

只要有一个优化良好的Web应用版本,几分钟内您就能拥有一个出色的移动应用。除此之外,客户服务非常友好且乐于助人!我只能说:推荐WebViewGold :-)

朱利安·科赫(Julian Koch) · 联合创始人 Dueldonkey · CodeCanyon

审查子代理

子代理是放在 .claude/agents/ 中、带有简短 frontmatter 的 Markdown 文件;您也可以用 /agents 以交互方式创建。这个子代理只读取和报告,所以永远不会在编辑上和您的主会话打架。

markdown
---
name: mobile-ui-auditor
description: Audits pages and components for problems in the native iOS and Android WebView apps (safe areas, tap targets, overflow, input zoom, viewport units). Use after UI changes and before every store submission.
tools: Read, Grep, Glob, Bash
---
You audit a web app that also ships as iOS and Android apps built with WebViewGold
(WKWebView / Android WebView). You report problems; you do not edit files.

Check every page and shared component for:
1. Safe areas: the viewport meta includes viewport-fit=cover if content draws behind
   the status bar; fixed or sticky top bars use env(safe-area-inset-top); bottom bars,
   tab bars, floating buttons and toasts use env(safe-area-inset-bottom).
2. Tap targets: interactive elements at least 44 x 44 CSS px (icon buttons, close
   buttons, checkboxes, links in dense lists) with at least 8 px between them.
3. Overflow: nothing wider than the viewport at 320 px; long words, tables, code
   blocks and images are constrained.
4. Inputs: font-size of at least 16 px on input, select and textarea; correct type,
   inputmode and autocomplete attributes on login and checkout forms.
5. Viewport units: 100vh on full-height layouts (use 100dvh with a 100vh fallback).
6. Hover-only UI: menus, tooltips or actions that need :hover to be reachable.
7. Desktop leftovers: sidebars without a mobile variant, Download our app banners,
   builder badges, cookie walls shown inside the app.
8. Dark mode: contrast of text and backgrounds if the app supports dark mode.

Output a table: file, line, issue, check number, suggested fix. Group by severity:
blocks review, looks broken, polish. End with the three fixes that matter most.

审查循环

一个典型的应用大约需要一个下午;之后有了斜杠命令,成本就很低了。

  1. 给 Claude Code 一双眼睛

    用 claude mcp add playwright npx @playwright/mcp@latest 添加 Playwright MCP 服务器,并用 /mcp 检查。之后代理就能打开您的预览 URL、调整视口大小并截图。它是桌面浏览器引擎,不是手机上的 WebView,也不会模拟刘海,所以它能发现溢出和尺寸问题,但发现不了安全区域问题。

  2. 保存子代理

    把上面的文件放到 .claude/agents/mobile-ui-auditor.md 并提交,这样每个在该仓库中运行 Claude Code 的人都会得到同样的审查。

  3. 运行审查和截图检查

    使用下面的提示词。在开始任何修复之前先阅读报告;您会比代理更快地发现误报(一个位于更大点按区域内的 40 px 按钮是没问题的)。

  4. 以小步 commit 修复

    每个严重程度分组一个 commit。一旦模式清楚了,就用 Shift+Tab 切换到自动接受编辑模式,在最后审阅 diff。

  5. 在真实设备上检查

    为 TestFlight 和内部测试构建,并逐项检查下面的清单。如果您没有 Mac,Cloud Builder 可以在浏览器中生成两个测试版本。

审查并修复的提示词

把路由列表换成您真实的页面,包括需要登录才能看到的页面。最后一步会给您留下一个斜杠命令,供今后每次改动时使用。

粘贴到 Claude Code
使用 mobile-ui-auditor 子代理审查 src/app 和 src/components。

然后使用 Playwright MCP 服务器打开 https://preview.example.com,在 320、375、390、430、768 和 1024 px 宽度下,为 /、/login、/dashboard、/settings 和付费墙截取整页截图(用我们的测试账号登录;需要密码时向我索取)。把截图与审查报告进行比对,补充只有在屏幕上才能看到的问题:元素重叠、文字被截断、横向滚动、按钮挨得太近。

把合并后的报告给我看,等我同意后再动手。然后按以下顺序修复:阻碍审核(blocks review)、看起来坏了(looks broken)、细节打磨(polish),每个分组一个 commit。修复规则:
- 安全区域通过 globals.css 中的 CSS 变量使用 env(safe-area-inset-top) 和 env(safe-area-inset-bottom);在 viewport meta 中加入 viewport-fit=cover。
- 点按区域至少 44 x 44 px;用 padding 扩大点击区域,而不是把图标放大。
- input、select 和 textarea 的字号为 16 px。
- 全高页面使用 min-height 100dvh,并以 100vh 作为回退。
- 悬停效果只放在 @media (hover: hover) 中。
- 不要全局禁用缩放,也不要改动 WebViewGold 配置。

最后创建 .claude/commands/mobile-check.md:一个斜杠命令,只对当前 git diff 中改动过的文件运行 mobile-ui-auditor 子代理,并输出报告。

修复最终应收敛到的 CSS

安全区域只交给一方负责。要么由 WebViewGold 让内容避开状态栏和主屏幕指示条区域(默认设置加上 bottombar),要么由您的 CSS 负责,同时开启 transparentStatusBar 并关闭 autoAdjustSafeAreaInsets。两者混用,会导致某些设备上出现双重间距,另一些设备上则完全没有间距。

css
/* app/globals.css
   Viewport meta 标签:<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
   没有 viewport-fit=cover 时,env(safe-area-inset-*) 始终为 0。 */
:root {
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --tabbar-height: 64px;
}

.app-header { position: sticky; top: 0; padding-top: var(--safe-top); }

.tab-bar {
  position: fixed; left: 0; right: 0; bottom: 0;
  height: calc(var(--tabbar-height) + var(--safe-bottom));
  padding-bottom: var(--safe-bottom);
}
main { padding-bottom: calc(var(--tabbar-height) + var(--safe-bottom) + 16px); }

.screen { min-height: 100vh; min-height: 100dvh; }

input, select, textarea { font-size: 16px; }

.icon-button { min-width: 44px; min-height: 44px; display: inline-grid; place-items: center; }

@media (hover: hover) {
  .card:hover { box-shadow: 0 4px 16px rgb(0 0 0 / 0.12); }
}

在真实设备上的验证清单

  • 带灵动岛的 iPhone:在每个页面中,页眉文字和按钮都位于灵动岛下方;标签栏位于主屏幕指示条上方,竖屏以及您允许的任何横屏模式下都是如此。
  • 小屏 iPhone(SE 尺寸):任何地方都没有横向滚动,包括表格和很长的邮箱地址。
  • iPad:布局合理利用了屏幕宽度;如果 orientationipad 允许旋转,旋转后布局也不会崩坏。参见iPad 支持。
  • 用拇指而不是指尖点按每个图标按钮:没有点空,也没有误触旁边的按钮。
  • 让每个输入框获得焦点:iOS 上不会自动放大;Android 上键盘不会挡住提交按钮。
  • Android 上使用最大的系统字号:布局依然完好,或者您用 MAX_TEXT_ZOOM 加以限制。
  • 开启深色模式:状态栏文字清晰可读(iOS 上使用 darkModeStatusBarTextColor)。
  • 长按一个链接:如果开启了 disablecallout,就不会出现浏览器式的预览。

常见陷阱

  • 缺少 viewport-fit=cover。您的 env() 内边距会悄无声息地计算为 0,而审查结果看起来一切正常。
  • 依赖截图检查安全区域。桌面浏览器引擎不会模拟刘海或主屏幕指示条。只有真机才能证明这些。
  • 禁用缩放,而不是修复字号。缩放是一项无障碍功能。先把输入框字号修到 16 px;只有当您的应用确实需要时,才使用 preventZoom 或 ENABLE_ZOOM。
  • 悬停状态“粘住”。在触摸屏上,:hover 样式在点按后会一直保留。把它们包在悬停媒体查询中。
  • 只修 Web,忘了外壳。深色应用上方出现白色状态栏,是 WebViewGold 的颜色设置问题,而不是 CSS 缺陷。在询问代理之前,先查看上面的表格。

常见问题

44 px 是 App Store 的硬性规定吗?

它是 Apple《人机界面指南》中的建议,而不是带编号的审核准则。不过审核人员会拒绝难以使用的应用,而过小的点按区域是最快走到这一步的方式。

我需要子代理,还是一段提示词就够了?

提示词只管用一次。子代理把检查清单保存在仓库中,在自己的上下文中运行,不会塞满您的主会话;而斜杠命令能让它在每次界面改动后成为习惯。

为什么不让代理一次性修复所有问题?

因为有些发现是误报,有些修复会与您的设计冲突。先审阅报告只需几分钟,却能让您免于回滚一个庞大的 diff。

env(safe-area-inset-*) 在 Android 上有效吗?

在 Android WebView 中是否支持,取决于系统版本,以及应用如何在系统栏后面绘制内容。请在设备上测试;如果开启了 TRANSPARENT_STATUS_BAR,请为应用保留一个回退内边距。

我应该在应用内隐藏页脚这类网站元素吗?

通常应该。通过 User-Agent 中的 WebViewGoldApp 标记识别应用,隐藏营销导航、Cookie 墙和应用下载横幅;自定义 CSS 和 JS 指南介绍了各种做法。

让您的应用上架商店的三种方式

结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 7×24 小时人工支持。

自己动手

$109 每个平台,一次性付费

WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。

在主页查看方案

Cloud Builder

$349 每个许可证,一次性附加购买

无需 Mac、Xcode 或 Android Studio:在浏览器中完成配置,我们在云端构建两个应用,并将其交付到 App Store Connect 和 Play Console。

Cloud Builder 如何运作 试用免费演示

Full Service

$698 每个平台 $798

把您的 URL 和图标发给我们。我们的团队在 72 小时内完成配置、构建并交付您的应用,白标,附源码项目。两个平台共 $1,158。

Full Service 详情 服务提供方: WeSetupYourWebViewApp

冬季特惠价格有效期至 2026年12月31日。

准备好发布您的应用了吗?

App Store & Google Play 审核通过保证 – 否则 14 天内退款

想直接交给我们?Full Service:我们在 72 小时内完成配置、构建并交付,每个平台 $698 起。有疑问?通过 7×24 小时在线聊天联系我们。

退款依据我们 FAQ 中列出的条件:应用因非内容原因被 Apple 和/或 Google 拒审,并在购买后 14 天内提出申请。