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

Google Play 审核被拒

权限用途不合理:如何从 WebViewGold 应用中移除未使用的权限,并通过声明表单

WebViewGold 模板支持许多原生功能,在提交之前,您不使用的那些功能所需的权限必须移除。Google 会检查每项权限在应用中是否都有可见的用途。下面列出每项权限由哪个 Config.java 开关和哪条 AndroidManifest.xml 条目控制,以及哪些权限还需要额外填写声明表单。

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

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

拒审背后的规则

Google 的权限政策规定,应用只能请求为实现用户可见且预期的功能所需的数据和能力。有些权限还受到额外限制:后台位置、访问所有已安装应用、广泛的文件访问、短信和通话记录,以及广泛的照片或视频访问,都需要在 Play Console 中提交声明、在系统提示前于应用内进行显著披露,某些情况下还要提交展示该功能的视频。在没有符合条件的功能时请求这些权限,会导致拒审;对于已上线的应用,则会收到附有截止日期的移除通知。

Web 封装应用通常只需要很少的权限:网络、使用推送时的通知权限,以及仅当您的 Web 应用确实调用了相关 API 时才需要的相机或位置权限。其余的都只是模板具备的能力,您可以把它们关掉。

逐项权限:何时有正当理由,以及在哪里关闭

权限在以下情况下合理WebViewGold 设置
位置(前台)您的 Web 应用为某个可见功能调用 HTML5 地理定位 API(门店查找、签到、路线)Config.java 中的 requireLocation;如不使用,设为 false 并删除 AndroidManifest.xml 中的位置相关条目
后台位置应用关闭时仍需要位置,并且这是核心功能(配送追踪、健身记录);需要提交声明和演示视频requireBackgroundLocation,以及 AndroidManifest.xml 中的 FOREGROUND_SERVICE_LOCATION 和 GPSService 代码块;否则全部保持注释状态
相机二维码或条形码扫描、文档扫描、用相机拍照上传requireCamera;如果您从不需要相机,把 filePickerMode 设为仅限图库
麦克风您的 Web 应用中的语音备忘、录音、语音聊天requireRecordAudio;几乎所有 Web 应用都应设为 false
存储 / 照片文件下载或从图库上传requireStorage;较新的目标版本使用系统照片选择器上传,无需广泛的照片权限
通知推送通知或本地推送随推送一同启用;当您的 Web 应用通过 registerpush:// 请求或在启动时,会出现运行时提示
查询所有软件包启动器、设备管理、杀毒软件。对 Web 应用来说几乎永远不需要不属于模板;如果它出现在合并后的清单中,说明是某个库添加的;请按下文所示移除
通讯录一个可见的导入联系人功能只有当您为通讯录 API 添加了 READ_CONTACTS 时才会存在

清理清单和声明

在 Android Studio 中二十分钟,或在 Cloud Builder 中切换几个开关。

  1. 在 Config.java 中设置开关

    逐一检查 requireLocation、requireBackgroundLocation、requireCamera、requireRecordAudio 和 requireStorage,除非您的 Web 应用用到该功能,否则一律设为 false。地理定位和设置文档介绍了每个开关。

  2. 删除 AndroidManifest.xml 中对应的行

    开关只是阻止应用使用某项能力;Google 读取的是清单条目。按照设置说明的要求,删除已关闭能力对应的 uses-permission 行。

  3. 检查合并后的清单

    在 Android Studio 中打开 AndroidManifest.xml,切换到 Merged Manifest 标签页。它会显示由库添加的权限,广告 ID 权限或意料之外的软件包可见性权限之类的“惊喜”就是从这里来的。

  4. 为保留的权限添加显著披露

    在您的 Web 应用触发敏感权限提示(位置、相机)之前,在应用内简短说明为什么需要它,以及数据会如何处理。在调用 API 之前于 Web 应用中弹出一个对话框就足够了,隐私政策中也应写明。

  5. 填写声明表单

    对您保留的任何受限权限,进入 Play Console → 应用内容 → 敏感应用权限(以及类似表单)。描述该功能,写明所在页面,并上传所要求的视频。如果没有符合条件的功能,就不要申请,而是移除该权限。

  6. 重新构建、验证、上传

    构建 bundle,从内部测试轨道安装,走一遍应该弹出权限提示的流程。然后在发布前查看 Play Console 中的 App Bundle 浏览器,它列出了 Google 从您的 bundle 中提取出的权限。

我的iOS WebView应用终于通过审核了。谢谢!!

塔哈·法鲁基(Taha Farooqui) · CodeCanyon

示例:移除某个库合并进来的权限

如果某个依赖项添加了您无法说明用途的权限,清单合并工具可以把它去掉。如果 manifest 元素中缺少 tools 命名空间,请先添加。

xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:node="remove" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" tools:node="remove" />

</manifest>

常见错误

  • 在 Config.java 中关闭了某项功能,却把权限留在 AndroidManifest.xml 中。Google 读取的是清单。
  • 因为“模板里本来就有”而保留后台位置权限。它需要声明、视频和核心使用场景。
  • 在用户还不明白原因时,就在启动时请求位置权限。请改为在功能页面中触发 HTML5 API。
  • 应用请求了相机或位置权限,隐私政策中却没有提及。
  • 商店详情中的权限说明承诺了应用并不具备的功能,这同样会触犯误导性声明规则。

常见问题

应用只是声明了某项权限、从未弹出提示,Google 也会拒绝吗?

会,这正是这项政策所针对的情况。没有可见功能的已声明权限会被视为不合理,无论提示是否出现过。

我的 Web 应用只在一个页面上使用地理定位 API。这算充分理由吗?

算,只要该功能真实、可见,并且应用是在相应场景中请求权限的。如被要求,请在声明中描述它,并在隐私政策中提及位置信息。

为什么 Play Console 列出了一项我从未添加的权限?

库会添加清单条目。例如 Google Mobile Ads SDK 会添加广告 ID 权限。Merged Manifest 标签页会显示来源,而 tools:node="remove" 可以去掉您无法说明用途的权限。

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

结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 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 天内提出申请。