# 遵守 Google Package Visibility 政策

由于 Google 更新了其开发者计划政策，在 Google Play 上发布使用 Pushwoosh SDK 的应用时可能会出现一些问题。有关详细信息，请参阅 [Google 政策中心](https://support.google.com/googleplay/android-developer/answer/10446026)。

为解决或预防这些问题，请按照本指南中描述的步骤操作，确保您的应用符合更新后的 Package Visibility 政策（2021 年夏季生效）。

## 更新 Pushwoosh SDK

将 Pushwoosh SDK（适用于 Android 原生应用）或任何跨平台框架的相应插件更新到最新版本；6.2.5 是最低要求版本。

从 6.2.5 版本开始，Pushwoosh SDK 中移除了任何从用户设备查询已安装应用或软件包的方法，特别是：

*   [android.content.pm](http://android.content.pm/).PackageManager.getInstalledApplications()
*   [android.content.pm](http://android.content.pm/).PackageManager.getInstalledPackages()

## 确保其他 SDK 合规

不仅 Pushwoosh SDK 可能受更新后政策的影响，您应用中集成的任何其他 SDK 也可能受到影响，因此您必须验证它们是否合规，才能将应用重新提交到 Google Play。

分析您的 APK，确保没有其他库使用 `getInstalledApplications()` 和 `getInstalledPackages()` 方法。

1.  启动 [Android Studio](https://developer.android.com/studio)。

2.  下载 .apk 文件。

3.  打开 **Build** -> **Analyze APK…**，找到您的 **.apk** 文件并选中它。

<img src="/android-push-notifications-compliance-with-google-package-visibility-policy-1.webp" alt=""/>

4.  您将看到 **View** 界面，您可以在其中找到 **.apk** 资源。导航到 **.dex** 文件：

<img src="/android-push-notifications-compliance-with-google-package-visibility-policy-2.webp" alt=""/>

5.  逐个打开所有 **.dex** 文件，找到 `android.content.pm.PackageManager`：

<img src="/android-push-notifications-compliance-with-google-package-visibility-policy-3.webp" alt=""/>

6.  查找 `getInstalledApplications()` 和 `getInstalledPackages()` 方法。如果存在这些方法，右键单击它并选择 **Find usages** 选项：

<img src="/android-push-notifications-compliance-with-google-package-visibility-policy-4.webp" alt=""/>

这将指示哪些 SDK 使用了这些方法。如果您正在使用 Ogury、Pollfish、Adjoe.io、ironSource 或 UnityNativeShare，这些库可能正在使用查询软件包的方法。

7.  确保将这些 SDK 更新到符合 Google 政策的版本，或从应用中移除它们。

8.  对您 APK 中的所有 .dex 文件重复步骤 2.4-2.7。

## 移除旧的不合规版本

1.  登录您的 Google Play Console。
2.  选择您要提交到商店的应用。
3.  检查您的 **Production、Open、Closed** 和 **Internal testing** 轨道，查找包含过时的 Pushwoosh SDK 或在上一步中发现的任何已集成的第三方 SDK 的旧 APK/AAB。

如果您发现此类工件，请移除应用包。操作如下：

1.  打开一个轨道（例如，Internal testing）。

2.  点击 **Release Details**。

3.  在 **App bundles and APKs** 部分，选择您的 APK/AAB 并打开其详细信息（版本右侧的蓝色箭头）。

4.  点击 **Explore App Bundle**。

5.  点击 **Delete App Bundle** 按钮删除应用包。

<Aside type="caution">
确保应用包已被删除，而不仅仅是停用。
</Aside>

6.  如果某个版本已经发布，其 APK/AAB 可能无法删除。在这种情况下，请使用新的 SDK 版本更新该版本。

对所有过时的工件重复步骤 1 - 6。

<Aside type="note">
在重新提交到 Google Play 之前，请确保在当前版本中更新应用。
</Aside>

在重新提交前增加应用版本号（例如，如果版本是 1.0.1，则应变为 1.0.2）。

## 加快审批速度

为加快 Google 的审批速度，请发送申诉邮件至 play-bd-support@google.com，并附上截图以证明：

*   您的 APK 不包含对以下方法的任何调用：

[_android.content.pm_](http://android.content.pm/)_.PackageManager.getInstalledApplications()_\
[_android.content.pm_](http://android.content.pm/)_.PackageManager.getInstalledPackages()_

*   您在 Google Play Console 中的所有发布轨道都只包含合规的应用包。

## 与我们分享您的反馈

您的反馈有助于我们创造更好的体验，因此，如果您在 SDK 集成过程中遇到任何问题，我们非常希望听到您的声音。如果您遇到任何困难，请随时[通过此表单](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform)与我们分享您的想法。