项目背景
一段说明加上生产 URL。“There is no separate mobile codebase”(没有单独的移动端代码库)这句话,能阻止 Codex 在您要求移动端功能时提议使用 React Native、Capacitor 或第二个仓库。
ChatGPT & Codex
Codex 在动您的代码之前会先读 AGENTS.md。把它猜不到的三件事告诉它:应用运行在原生 WebView 中、如何调用 WebViewGold 的 JavaScript 桥接,以及每次改动都必须遵守哪些商店规则。下面是一份完整的模板,以及对每个部分的说明。
每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。
Codex 会在仓库根目录(以及子文件夹中,用于针对特定文件夹的指令)查找 AGENTS.md,并把其中的内容当作本次会话的长期指令:约定、命令、需要避免的事情。它相当于 Codex 版的 CLAUDE.md 文件或 Cursor 项目规则,而且是纯 Markdown,所以您可以只维护一份权威来源,再复制成其他格式。
对 WebViewGold 应用来说,这个文件物有所值,因为代理的默认假设在三个具体方面是错的。它假定运行环境是浏览器,于是在明明有原生调用的地方去用 Web Share API 或 PWA manifest。它不知道桥接的语法,于是会编造出类似 window.WebViewGold.share() 的东西。它也完全不知道,在 iOS 上用 Stripe 按钮卖积分会导致拒审。下面的模板一次解决这三个问题。
把它保存为仓库根目录下的 AGENTS.md,替换方括号中的占位符,并删除您用不到的桥接调用。表格中的每个 scheme 都取自WebViewGold iOS 文档和Android 文档。
# AGENTS.md - [App name]
## What this project is
[One paragraph: what the app does, who uses it, main stack, e.g. Next.js + Supabase.]
Production URL: https://app.example.com
The same web app is published as native iOS and Android apps with WebViewGold.
The native apps load the production URL inside a WebView (WKWebView on iOS,
Android WebView on Android). There is no separate mobile codebase.
## Runtime context you must respect
- The page can run in three places: desktop browser, mobile browser, native app.
- The native app sends the user agent marker `MYAPPNATIVE` (set in Config.swift
and Config.java). Detect it only through `isNativeApp()` in `src/lib/platform.ts`.
- OAuth popups do not behave like in a browser. Google/Facebook login is handled by
the wrapper (Social Login Helper); Sign in with Apple is handled automatically.
Do not add workarounds that open OAuth in new windows.
- window.open and target="_blank" are governed by the wrapper's URL handling rules.
Use normal links for internal navigation.
- When `isNativeApp()` is true: no "Add to home screen" or "Download our app"
banners, no service worker install prompts, no cookie banner unless legally required.
## WebViewGold JavaScript bridge
Native features are triggered by navigating to a URL scheme:
`window.location.href = "scheme://..."`. Results come back as global JavaScript
variables or callback functions, asynchronously. Only call schemes when
`isNativeApp()` is true and always keep a web fallback.
Full reference: https://www.webviewgold.com/llms-full.txt
| Feature | Call | Result |
| --- | --- | --- |
| Request push permission | `registerpush://` | native permission prompt |
| Check push permission | `checkNativePushPermissions://` | `nativePushEnabled` (true/false) |
| OneSignal subscription ID | `getonesignalplayerid://` | `onesignalplayerid` |
| Local scheduled notification | `sendlocalpushmsg://push.send?s=SECONDS=msg!MESSAGE&!#TITLE&!#URL` | - |
| Share sheet | `shareapp://message?=TEXT&url=URL` | - |
| Haptics | `lighthaptic://`, `successhaptic://`, `errorhaptic://` | - |
| Biometric check | `bioauth://` | iOS: `onBioAuthSuccess()`, `onBioAuthFailure(code, msg)`, `onBioAuthUnavailable()` |
| QR scanner | `qrcode://` | scanned URL is loaded in the WebView |
| Barcode scanner | `barcodescanner://` | `barcodescanresult` |
| In-app purchase (RevenueCat) | `revenuecat://purchase?external_id=USER_ID&product=PRODUCT_ID` | entitlement in RevenueCat; grant server-side via webhook |
| Restore purchases | `restoreinapppurchases://` | - |
| Manage subscription | `cancelinapppurchase://` | opens the store subscription page |
| App version | `getappversion://` | `versionNumber`, `bundleNumber` |
| Install ID | `get-uuid://` | `uuid` |
| Save image to gallery | `savethisimage://?url=IMAGE_URL` | - |
| Open system app settings (Android) | `settingsapp://` | - |
Injected variables arrive after a short delay: poll with a timeout, never read
them synchronously after the navigation.
## Store rules (every change must keep these true)
- /privacy and /terms are real routes, linked from the footer and from settings.
- Users who can sign up can delete their account in settings (server-side deletion)
and via a public /delete-account page.
- If any third-party login exists, Sign in with Apple is offered as an equal option.
- Digital goods, subscriptions and credits are bought through the bridge
(`revenuecat://purchase...`) when `isNativeApp()`; Stripe stays for browser users.
Never show card forms or external payment links for digital goods in the native app.
Physical goods and services may use Stripe everywhere.
- Layout works from 320px width, tap targets >= 44px, safe-area insets on fixed bars,
inputs with font-size >= 16px.
- Every fetch has loading, empty, error and retry states. No blank screens.
- User-generated or AI-generated content has a report action; users can block others.
- No placeholder copy, no dead links, no mixed content.
## Commands
- Install: `npm install`
- Dev server: `npm run dev`
- Lint and typecheck: `npm run lint && npm run typecheck`
- Tests: `npm test`
Run lint and tests before you finish a task.
## Definition of done for any task
1. Works in a desktop browser and at 320px width.
2. Native-only code is behind `isNativeApp()` with a web fallback.
3. No new store-rule violations (see above).
4. Summarize what changed and what to test on a real device.一段说明加上生产 URL。“There is no separate mobile codebase”(没有单独的移动端代码库)这句话,能阻止 Codex 在您要求移动端功能时提议使用 React Native、Capacitor 或第二个仓库。
User-Agent 标记是关键。在 WebViewGold 中设置一个包含您标记的自定义 User-Agent(Config.swift 中的 useragent_iphone 和 useragent_ipad,Config.java 中的 USER_AGENT),Web 应用就能用一个辅助函数区分应用和浏览器。
准确的 scheme 和注入变量的名称。这是代理最容易凭空编造的部分。只保留您用到的行;其余的指向 llms-full.txt,而不是把整份文档粘贴进来。
写成始终成立的不变量,而不是待办清单,这样它们适用于以后的每个任务。代价最高的是支付规则:Apple 3.1.1 会拒绝在应用内购买之外销售数字商品的应用。
只要您告诉 Codex 有哪些命令,它就会在沙盒中运行它们。完成标准则让它报告您仍需亲自完成的设备测试。

我的iOS WebView应用终于通过审核了。谢谢!!
替换占位符,删除您不会用到的桥接行,并根据您的包管理器调整命令。
Config.swift:useragent_iphone 和 useragent_ipad;Config.java:USER_AGENT。保留默认的 User-Agent 字符串,并在后面追加您的标记(例如 MYAPPNATIVE/1.0),这样网站和 OAuth 提供方仍然能识别设备。
使用下面的提示词。它会创建 isNativeApp() 并替换代码中内联的 User-Agent 判断,这样文件的其余部分就有了可以引用的对象。
AGENTS.md 是从仓库中读取的,所以云端 Codex、CLI 和 IDE 扩展看到的都是同一套规则。子文件夹中嵌套的 AGENTS.md 文件可以补充针对该文件夹的指令。
先阅读 AGENTS.md。然后:1)根据其中描述的 User-Agent 标记,在 src/lib/platform.ts 中实现 isNativeApp(),并用它替换代码库中所有内联的 User-Agent 判断;2)在条目详情页添加一个原生分享按钮:在原生应用中使用 AGENTS.md 桥接表里的分享面板调用;在浏览器中,若 Web Share API 可用就用它,否则把链接复制到剪贴板并显示简短的确认提示;3)保存成功后触发成功触感反馈,仅限原生应用。保持现有设计不变。报告您改了什么,以及应用了 AGENTS.md 中的哪些规则。
会。云端任务在您仓库的克隆上运行,所以已提交的文件会像在 CLI 和 IDE 扩展中一样被读取。
让它在每个任务结束时列出所应用的规则(模板在完成标准中已经这样要求),并阅读 pull request 的摘要。如果某条规则屡次被忽略,就把它移到文件中更靠前的位置,并写得更具体。
不需要。只保留您正在用或打算用的功能对应的行,其余的链接到 https://www.webviewgold.com/llms-full.txt。当某个任务需要表中没有的功能时,代理可以去读完整文档。
这些构建工具不读取 AGENTS.md,但商店规则那一节可以当作提示词使用:在要求修改之前,把它粘贴到构建工具的聊天框里。
结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 7×24 小时人工支持。
$109 每个平台,一次性付费
WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。
在主页查看方案$349 每个许可证,一次性附加购买
无需 Mac、Xcode 或 Android Studio:在浏览器中完成配置,我们在云端构建两个应用,并将其交付到 App Store Connect 和 Play Console。
Cloud Builder 如何运作 试用免费演示$698 每个平台 $798
把您的 URL 和图标发给我们。我们的团队在 72 小时内完成配置、构建并交付您的应用,白标,附源码项目。两个平台共 $1,158。
Full Service 详情 服务提供方:冬季特惠价格有效期至 2026年12月31日。
App Store & Google Play 审核通过保证 – 否则 14 天内退款
想直接交给我们?Full Service:我们在 72 小时内完成配置、构建并交付,每个平台 $698 起。有疑问?通过 7×24 小时在线聊天联系我们。
退款依据我们 FAQ 中列出的条件:应用因非内容原因被 Apple 和/或 Google 拒审,并在购买后 14 天内提出申请。