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

Google Play 审核被拒

Google Play 上的前台服务权限:完成声明,或移除该服务

从 Android 14 开始,每个前台服务都有一个声明的类型,Google 要求以 Android 14 或更高版本为目标的应用在 Play Console 中用说明和视频为每种类型提供理由。典型的 Web 封装应用根本不需要前台服务。如果您的 bundle 中出现了前台服务,请先查明它的来源,然后要么移除它,要么提交一段与使用场景相符的视频进行声明。

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

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

Android 14 带来了哪些变化,Google 审核什么

前台服务是指应用在用户去做别的事情时仍持续执行的工作,并通过一条持续显示的通知让用户看得到:音乐播放、导航、锻炼记录、通话。从 Android 14 开始,每个前台服务都必须声明一个类型(location、mediaPlayback、dataSync、camera、microphone、health、phoneCall 以及其他几种),应用还必须持有对应的 FOREGROUND_SERVICE_* 权限。有些类型还需要底层的运行时权限,例如 location 类型需要位置访问权限。

Google Play 在此基础上增加了一个审核环节。以 Android 14 或更高版本为目标并使用前台服务的应用,需要在“应用内容”页面上填写前台服务声明。对于每种类型,您需要描述使用它的功能,说明如果系统推迟或中断该任务会对用户造成什么影响,从列表中选择对应的使用场景,并附上一段视频链接,展示用户触发该功能的操作步骤。Google 的前台服务要求介绍了这份表单。它背后的预期是:任务由用户发起,或者用户能明显察觉到它,并且它不能简单地推迟到以后再执行。

拒审通知怎么写

有两种典型情况。审核之前:在您说明应用是否使用前台服务权限、并声明所用的每种类型之前,上传或发布会被阻止。审核之后:声明被拒,原因是视频没有展示该功能、所选的使用场景与视频中展示的内容不符,或者该类型对于应用的用途来说理由不足。一直上传同一类视频的开发者会形容自己陷入了死循环。出路是修正功能、使用场景和视频之间的不一致,或者移除该服务。

封装应用中可能出现的前台服务类型

类型和权限典型来源怎么办
location / FOREGROUND_SERVICE_LOCATIONWebViewGold 用于后台追踪的 GPSService(requireBackgroundLocation)只有用于属于应用核心、由用户发起的追踪时才保留;否则就重新把这些代码块注释掉
mediaPlayback / FOREGROUND_SERVICE_MEDIA_PLAYBACK音频或媒体库只有当息屏播放音频是核心功能时才保留
dataSync / FOREGROUND_SERVICE_DATA_SYNC同步、备份或上传库通常应移除;对于用户请求的传输,Google 建议使用用户发起的数据传输作业(user-initiated data transfer jobs)
camera、microphone、phoneCall视频通话或语音 SDK只用于真正的通话功能
health / FOREGROUND_SERVICE_HEALTH健身追踪库只在用户主动记录锻炼时使用
specialUse少见,来自自定义代码需要书面理由并会被审核;它不是绕过合适类型的捷径

把 Web 应用转换成原生应用的绝佳方式!周转速度快,无需开发完整的原生应用就能把应用上架到应用商店!

Kevin Joling · FlightConnections & TrainConnections · Trustpilot

先清理,再声明剩下的

清理大约一小时,每保留一种类型就需要一段视频。

  1. 列出每个服务和权限

    在 Android Studio 中打开 AndroidManifest.xml,切换到 Merged Manifest 标签页,搜索 foregroundServiceType 和 FOREGROUND_SERVICE。在 Play Console 中,App Bundle 浏览器会列出 Google 从您的 bundle 中提取出的权限。

  2. 对每个条目问两个问题

    它是由用户启动的吗?它运行时用户能察觉到吗?如果对于您的应用实际提供的某项功能,这两点都不成立,这个服务就不应该出现在应用中。

  3. 移除不需要的部分

    对于 WebViewGold 的位置服务,把 requireBackgroundLocation 设为 false,并注释掉 FOREGROUND_SERVICE_LOCATION 和 GPSService 代码块(参见Android 地理定位文档)。对于库,用下面的规则移除权限及其服务,然后测试该库提供的功能;移除一个库仍在调用的服务可能会导致崩溃。

  4. 为每种保留的类型录制一段短视频

    在真机上录屏:打开应用,必要时登录,点按启动该功能的控件(例如调用 backgroundlocationon:// 的“开始追踪”按钮),展示持续显示的通知,离开应用以表明任务明显仍在继续,然后停止它。把视频以不公开列出的形式上传到 YouTube。

  5. 填写声明

    在“应用内容”页面上打开前台服务声明,针对每种类型用一两句话描述该功能,说明任务被推迟或中断时会出现什么问题,选择与视频相符的使用场景,并粘贴链接。

  6. 重新构建并替换所有轨道

    提高版本代码,构建新 bundle,并替换测试轨道上的旧 bundle。一旦没有任何有效 bundle 再包含您已移除的类型,就不再需要为它进行声明。目标 API 级别指南解释了为什么在这里用最新模板重新构建同样重要。

移除某个库合并进来的前台服务

从 Merged Manifest 标签页中复制确切的类名;下面的类名只是占位符。之后请测试该库的功能。

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

    <!-- 移除应用未使用的前台服务类型 -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" tools:node="remove" />

    <application>
        <!-- 占位符:请使用 Merged Manifest 标签页中显示的类名 -->
        <service android:name="com.example.somelibrary.SyncForegroundService" tools:node="remove" />
    </application>

</manifest>

模板:位置追踪服务的声明回答

用用户会使用的措辞描述一项具体的功能,并让视频准确展示这些步骤。模板保留英文,因为 Google 审核人员阅读的是英文。

用于前台服务声明中的 location 类型(请修改方括号中的内容)
Feature description: When a courier taps Start shift, [App name] starts a location foreground service that shares the courier's position with dispatch until the courier taps End shift. An ongoing notification is shown the whole time.

Impact if deferred or interrupted: Dispatch loses the courier's position during the delivery, customers see wrong arrival times, and orders cannot be reassigned when a courier is delayed. The task cannot be postponed, because the position is only useful in real time.

Use case: [the closest match from the list, for example user-initiated location sharing].

Video: [YouTube link], showing login with the test account from Sign-in details, Start shift, the ongoing notification, the app in the background with tracking active, and End shift.

The same feature is declared in the Location permissions declaration.

常见问题

我的应用不在后台运行任何东西。为什么 Play Console 会问到前台服务?

因为您的 bundle 中有 FOREGROUND_SERVICE 权限或带类型的服务,通常是某个库或您不需要的模板代码块带进来的。在合并后的清单中找到它并移除;如果什么都不剩,就不再需要声明了。

推送通知需要前台服务吗?

不需要。OneSignal、Firebase Cloud Messaging 和 Pushwoosh 通过系统投递通知,您的应用中不需要前台服务;定时的本地提醒也不属于前台服务的使用场景。

我可以选择 specialUse 来跳过视频吗?

specialUse 用于其他类型都无法涵盖的任务,Google 会审核书面理由。把它用于明显属于其他类型(例如 location 或 mediaPlayback)的用途,只会招致拒审。

声明视频为什么会不合格?

视频从功能中途开始、跳过了启动服务的用户操作、展示的流程与所选使用场景不同,或者因为链接设为私享而无法打开。请让视频简短、线性,并让任何拿到链接的人都能观看。

我能通过以较旧的 Android 版本为目标来避免声明吗?

不能。Google 要求新应用和更新以较新的 API 级别为目标,因此当前的每个应用都以 Android 14 或更高版本为目标,只要使用前台服务就需要声明。

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

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