自己动手
$109 每个平台,一次性付费
WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。
在主页查看方案v0 + 截屏
付费课程、私密聊天、账户余额、一次性优惠券:有些页面不应该出现在群聊里。WebViewGold 可以在 Android 上禁止截屏和录屏,在 iOS 上检测截屏,然后调用您 v0 应用中的一个 JavaScript 函数,让您做出响应。这套工具也能反过来用:takescreenshot:// 可以把页面主动保存到相册,适合门票和收据。
每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。
| 功能 | iOS | Android |
|---|---|---|
| 阻止截屏和录屏 | 无法实现:iOS 没有可以阻止截屏的官方 API | Config.java 中的 PREVENT_SCREEN_CAPTURE = true 会阻止对应用截屏和录屏 |
| 通知 Web 应用 | Config.swift 中的 let preventScreenCapture = true 会检测截屏和录屏,并调用 onScreenCaptureAttempt()(名称虽然如此,文档描述的是检测) | 会调用 onScreenCaptureAttempt(),方便您显示自己的提示 |
| 主动把当前页面保存到相册 | takescreenshot:// | takescreenshot:// |
| 作用范围 | 整个应用共用一个开关;文档中没有按页面设置的选项 | 整个应用共用一个开关;文档中没有按页面设置的选项 |
把这段粘贴到 v0 中以实现 Web 应用端。检查结果,发布,然后在 WebViewGold 应用中测试。
为这个 Next.js 应用添加适用于 WebViewGold 应用封装层的屏幕捕获处理。1) 创建客户端组件 components/screen-capture-guard.tsx,并挂载到 app/layout.tsx 中。2) 在 useEffect 中把 window.onScreenCaptureAttempt 设为一个函数,显示提示并调用 Server Action logCaptureAttempt(window.location.pathname);卸载时移除它。3) 只在受保护的路由(/lessons 和 /account/statements)上显示提示。4) 在 logCaptureAttempt 中,在服务器上从会话读取用户,并把 user_id、path 和时间戳插入 capture_events 表。5) 在 /tickets/[id] 上添加一个“保存到相册”按钮,仅当 navigator.userAgent 包含我的 WebViewGold 自定义标记时才导航到 takescreenshot://,在浏览器中以“打印”作为后备。6) 绝不要阻止导航或让用户退出登录。

我很高兴购买了这个应用!非常简单,文档也很棒。联系客服后,他们回复很快且非常友好,一天之内就解决了我的问题。10/10,值得推荐。
约 20 分钟,外加两个应用的重新构建。
iOS:Config.swift 中的 let preventScreenCapture = true。Android:Config.java 中的 PREVENT_SCREEN_CAPTURE = true。这是原生改动,因此会随下一次应用构建发布,而不是随 Web 部署生效。
WebViewGold 调用的正是这个名称的函数。由 Vite、Next.js 等工具打包的代码位于模块中,因此在组件内部声明的函数不是全局的。请在每个页面都会运行的代码中显式赋值:window.onScreenCaptureAttempt = function () { … }。
说明原因(“为尊重创作者,课程幻灯片受到保护”),而不是让用户退出登录。在 iOS 上,函数运行时截图已经生成,所以这条提示起的是劝阻作用,而不是阻止。
考试、文档和金融类应用可能需要审计记录(用户、页面、时间)。如果您记录这些信息,请在隐私政策中说明。
在保存合情合理的地方(门票、收据、证书),添加一个导航到 takescreenshot:// 的“保存到相册”按钮。如果您在 Android 上同时启用了截屏阻止,请在设备上确认保存的图片不是空白的。
在每个页面加载一次(例如放在应用入口文件中)。可选的日志端点属于您技术栈的服务端:Next.js 路由处理程序和 Server Actions,通过 Neon 或 Supabase 使用 Postgres。
// 自定义 User-Agent 包含 "WebViewGold" (在 Config.swift / Config.java 中设置)
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1;
// WebViewGold 检测到截屏或录屏时调用 (iOS),
// 或在开启 PREVENT_SCREEN_CAPTURE 时检测到截屏尝试时调用 (Android)
window.onScreenCaptureAttempt = function () {
showToast("付费课程已关闭截屏功能。"); // 您自己的 UI 辅助函数
fetch("/api/capture-events", {
method: "POST", keepalive: true,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ path: location.pathname, at: Date.now() })
});
};
// 正当的保存方式, 例如在门票页面上
function saveTicketToPhotos() {
if (IN_APP) { window.location.href = "takescreenshot://"; }
else { window.print(); } // 浏览器后备方案
}不能完全禁止。iOS 没有可以阻止截屏的官方 API。WebViewGold 会检测截屏和录屏(Config.swift 中的 preventScreenCapture),并在 Web 应用中调用 onScreenCaptureAttempt,让您做出响应。真正的阻止在 Android 上可用,即 Config.java 中的 PREVENT_SCREEN_CAPTURE。
本身不会。两个商店都没有要求应用必须允许截屏,检测也不需要任何权限。如果受保护的页面在 Android 录屏中显示为黑屏,请在审核备注中说明,以免有人把它误认为 bug。
WebViewGold 文档描述的是对整个应用生效的开关,而不是按页面的设置。您能按页面控制的是响应方式:onScreenCaptureAttempt 可以检查当前路由,只在敏感页面上显示提示。
添加一个“保存到相册”按钮,在应用内导航到 takescreenshot://。WebViewGold 会把当前 WebView 内容保存到相册,这样即使没有网络,用户到了现场也能出示门票。
能,只要该函数挂在 window 对象上。在组件或 ES 模块内部声明的函数不是全局的,WebViewGold 就找不到它;请在 v0 项目的入口文件中给 window.onScreenCaptureAttempt 赋值。
结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 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 天内提出申请。