应用内:设置 → 删除账号
在 Web 应用的账号或设置区域放一个醒目的按钮,并加入确认步骤,说明哪些内容会被删除。删除后用户会被登出。由于 WebViewGold 应用展示的就是您的 Web 应用,这完全是 Web 端的改动,不涉及任何原生代码。
Google Play 审核被拒
如果用户可以在您的应用中创建账号,Google 就要求两样东西:一种在应用内删除该账号的方式,以及一个无需重新安装应用即可请求删除的网页。两者都要填写在“数据安全”部分。本指南展示如何在 Vibe Coder 最常用的后端中实现它们。
每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。
这条规则属于用户数据政策。任何允许用户创建账号的应用(包括通过 Google、Apple 或其他社交登录注册),都必须在应用内提供一个容易找到的选项来发起账号删除,同时提供一个网页资源,让用户在应用之外也能提出同样的请求。删除账号意味着删除与之关联的数据,除非法律要求您保留其中一部分,此时您需要说明这一点。停用、匿名化或“暂停”账号都不算;在应用内要求用户发邮件给您、却没有一个能从浏览器访问的页面,也不算。
这个网页 URL 并不是走过场:Play Console 会在数据安全表单中要求填写它,在您的商店详情中展示它,审核人员也会打开它。链接指向首页,或者指向一个需要应用才能打开的页面,是这类拒审的典型原因。
在 Web 应用的账号或设置区域放一个醒目的按钮,并加入确认步骤,说明哪些内容会被删除。删除后用户会被登出。由于 WebViewGold 应用展示的就是您的 Web 应用,这完全是 Web 端的改动,不涉及任何原生代码。
一个像 yourdomain.com/delete-account 这样的页面,在任何浏览器中都能打开,说明操作步骤,并让已经没有安装应用的用户也能请求删除(登录后使用同样的按钮,或一个经过验证的请求表单)。在隐私政策中链接到这个页面,可以帮助审核人员找到它。
个人资料、上传的文件、帖子、订阅、推送订阅 ID。如果您因税务原因需要保留发票,请在页面上和隐私政策中写明这一点以及保留期限。
依次进入“应用内容 → 数据安全 → 数据删除”:确认用户可以请求删除账号,并粘贴公开的 URL。同时为您申报的每种数据类型标记删除选项。
选择与您后端对应的步骤;网页和 Play Console 相关的步骤适用于所有人。
创建一个 Edge Function:验证调用者的 JWT,删除该用户在每张表中的数据行(或依赖指向 auth.users 的 ON DELETE CASCADE 外键),从 Storage 中删除文件,然后调用 admin API 删除该认证用户。service role key 只存放在函数中。在“删除账号”按钮中调用它,之后让用户退出登录。Supabase 账号删除指南提供了完整的实现模式和构建工具提示词。
使用一个基于 Admin SDK 的 callable Cloud Function,依次删除 Firestore 文档、Storage 文件,最后删除 Auth 用户;或者在用户最近登录过之后调用客户端的删除方法,让官方的“Delete User Data”扩展清理其余数据。遇到“requires recent login”错误时,请用户重新登录。
在个人资料页面添加一个“删除账号”操作,调用后端函数。该函数先从您的实体中删除该用户的记录,再删除用户记录本身。如果您的套餐还不包含后端函数,可以先上线一个会通知您的请求表单,并在规定时间内手动完成删除;请在页面上说明这一点。
让构建工具创建一个无需应用即可访问的 /delete-account 路由:一段简短说明、应用内的操作步骤,以及带删除按钮的登录入口或一个经过验证的请求表单(电子邮件确认链接)。在隐私政策和页脚中加上这个链接。
“应用内容 → 数据安全 → 数据删除”:回答用户可以请求删除,并粘贴 URL。检查每种数据类型的删除回答,保存,然后重新提交应用。该 URL 会显示在商店详情的数据安全详情中。
在已安装的应用中创建一个临时账号,删除它,确认再次登录会失败、数据也已消失。在浏览器的无痕窗口中打开网页 URL,确保它不会重定向到首页。

在过去5年我们尝试过的所有应用平台中,WebViewGold为我们带来了有史以来最短、最高效的上市时间。我不知道为什么没有更早发现你们,但我真的非常满意。目前我们的应用在iOS App Store和Google Play商店的下载量已超过6000次,没有任何问题!
一个最简的服务器端删除实现。把 service role key 保存在函数的 secrets 中;绝不要把它放进 Web 应用。
import { createClient } from "npm:@supabase/supabase-js@2";
Deno.serve(async (req) => {
const jwt = req.headers.get("Authorization")?.replace("Bearer ", "");
if (!jwt) return new Response("Unauthorized", { status: 401 });
const admin = createClient(Deno.env.get("SUPABASE_URL")!, Deno.env.get("SUPABASE_SERVICE_ROLE_KEY")!);
const { data: { user }, error } = await admin.auth.getUser(jwt);
if (error || !user) return new Response("Unauthorized", { status: 401 });
// 1. 删除该用户的数据行(或依赖 ON DELETE CASCADE)
await admin.from("posts").delete().eq("user_id", user.id);
await admin.from("profiles").delete().eq("id", user.id);
// 2. 删除上传的文件,然后删除认证用户
await admin.auth.admin.deleteUser(user.id);
return new Response(JSON.stringify({ ok: true }), { headers: { "Content-Type": "application/json" } });
});适用。在应用中创建账号的任何方式,包括社交登录,都会触发这项要求。您仍然需要在后端删除账号;仅撤销 Google 授权并不等于删除。
可以。基于请求的流程是可以接受的,前提是请求既能在应用内发起,也能在网页上发起,处理时限已写明,并且删除确实会执行。
Apple 依据准则 5.1.1 要求提供应用内账号删除,但不要求单独的网页。无论如何都把网页做好,一次实现就能同时满足两大商店。
结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 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 天内提出申请。