请求的操作:Declare your Ad ID permission

回答 10 浏览 4.2万 2022-03-14

今天,我收到了这封电子邮件。

Last July, we announced Advertising policy changes to help bolster security and privacy. We added new restrictions on identifiers used by apps that target children. When users choose to delete their advertising ID in order to opt out of personalization advertising, developers will receive a string of zeros instead of the identifier if they attempt to access the identifier. This behavior will extend to phones, tablets, and Android TV starting April 1, 2022. We also announced that you need to declare an AD_ID permission when you update your app targeting API level to 31 (Android 12). Today, we are sharing that we will give developers more time to ease the transition. We will require this permission declaration when your apps are able to target Android 13 instead of starting with Android 12.

Action Items If you use an advertising ID, you must declare the AD_ID Permission when your app targets Android 13 or above. Apps that don’t declare the permission will get a string of zeros. Note: You’ll be able to target Android 13 later this year. If your app uses an SDK that has declared the Ad ID permission, it will acquire the permission declaration through manifest merge. If your app’s target audience includes children, you must not transmit Android Advertising ID (AAID) from children or users of unknown age.

我的应用程序没有使用广告ID。我是否应该在Manifest中声明AD_ID Permission?

Abdullah 提问于2022-03-14
10 个回答
#1楼
得票数 40

如果该应用程序不包含任何广告。

你可以通过在AndroidManifest.xml文件中添加tools:node="remove"来简单地删除/忽略它。

<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>

即使另一个第三方库要求这个特定的许可,构建将被强制不在你的最终Manifest文件中合并它。 你可以从这个SO答案中获得更多的信息

从这里获得更多的信息

Rumit Patel 提问于2022-07-27
Rumit Patel 修改于2022-10-28
它对我不起作用:()Tanvir Ahmed 2022-07-28
@TanvirAhmed 你可以在合并后的清单文件中找到你的最终许可,地址是app/build/intermediates/manifests/full/debug/AndroidManifest.xmlRumit Patel 2022-07-29
小心点,对我来说,合并后的清单没有显示权限.AD_ID。然而,我在反编译的APK中看到了它,并且在添加"删除"标签时看到它消失了。希望google play现在能停止抱怨。Oliver Metz 2022-09-14
我正在用flutter构建应用程序。而这个解决方案对我来说是无效的。L.Goyal 2022-09-26
它对我也不起作用......。Christian 2022-10-15
#2楼 已采纳
得票数 32

如果您的应用程序使用谷歌移动广告SDK(Admob)版本20.4.0或更高,您可以跳过手动设置权限,因为SDK会自动声明该权限

更多信息,请点击这里。

https://developers.google.com/admob/android/quick-start

ABDERRAHMANE OUALI 提问于2022-03-14
是的,你是对的,我使用的是最新的Admob Sdk,我已经检查了我的应用程序合并清单,发现AD_ID权限是存在的。Abdullah 2022-03-14
我的应用程序不包含广告,但我仍然需要添加这个吗?Ysp 2022-03-15
@Ysp ,如果你的应用程序不包含广告,那么你就不需要这样做了。Umeshkumar D. 2022-03-15
这个问题的答案可能是愚蠢的,但如果能得到澄清就好了;我通过Firebase这样使用AdMob。implementation 'com.google.firebase:firebase-ads:20.6.0' - 因为它的版本是20.6.0,我确信它没有问题 - 但由于它是从Firebase重定向的,我只想知道它是否使用了AdMob的最新SDK?Jonathan 2022-03-15
@Jonathan,Firebase是否使用最新版本并不重要,只要它的版本高于20.4.0 就可以了。ABDERRAHMANE OUALI 2022-03-15
#3楼
得票数 23

谷歌在此描述了如何解决

https://support.google.com/googleplay/android-developer/answer/6048248?hl=en

添加到清单中

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
Bruno Morais 提问于2022-03-14
所以我们必须更新我们所有的应用程序,加入这个权限?如果我们不更新我们的应用程序又会发生什么?joan16v 2022-03-15
我能否使用AD_ID变量,例如像这样<uses-permission android:name="com.google.android.gms.permission.@string/admob_appId"/>?谢谢spcsLrg 2022-03-15
@spcsLrg, 不需要,, 只要添加<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>即可。Suhad Bin Zubair 2022-03-17
@joan16v 这是来自谷歌的要求,如果你的构建目标api从31。请看这里 developers.google.com/interactive-media-ads/docs/sdks/android/… 。如果你的目标api仍然是<=30,你不需要做任何事情。Phuc 2022-06-21
#4楼
得票数 23

案例1:你的应用程序有广告

</manifest>之前的AndroidManifest.xml中添加以下内容。

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

案例2:你的应用程序没有广告

在你的AndroidManifest.xml的顶部,确保你有xmlns:tools<manifest ...>。(赞美这个答案)例如。

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

然后,在页面底部的</manifest>标签之前,添加以下内容。

    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>

资料来源:

Aidin 提问于2022-07-29
CopsOnRoad 修改于2022-09-30
它对我不起作用:'(我仍然有关于com.google.android.gms.permission.AD_ID的警告。Chloé 2022-08-07
你的源码给了我这个错误" Service Unavailable"。Greg T 2022-08-22
#5楼
得票数 10

不要担心。所有使用Admob做广告的开发者都收到这个警告。只要确保你在你的build.gradle文件中使用最新Google Mobile Ads SDK(Admob) OR AdMob SDK版本高于或等于20.4.0。在这种情况下,SDK会自动管理它

否则对于20.4.0以下的旧版SDK,我们需要在我们的AndroidManifest.xml中手动提及以下一行

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
Umeshkumar D. 提问于2022-03-15
#6楼
得票数 10

如果您的应用程序不包含广告,请确保完成Play Console中应用程序内容页面(Policy >App content)的调查。

只要选择该选项。 No, my app does not contain ads

如果你不这样做,你将无法将你的应用程序的新版本上传到Google Play。

Google Play Console screenshot

Vadik 提问于2022-08-17
Vadik 修改于2022-08-17
#7楼
得票数 7

首先,
com.google.android.gms.permission.AD_ID可以由其他第三方SDK添加,如

  • Play Services-ads
  • firebase-analytics

所以,如果你没有手动添加permission.AD_ID,通过检查merged manifest文件.

merged-manifest路径:
project > app > build > intermediate > merged_manifest > release > AndroidManifest.xml
现在去你的play console > app content > Adverstising ID

  • 如果您的合并清单中不包含AD_ID,请选择NO,否则
  • 选择YES,并完成下一个选项。
Abu Saeed 提问于2022-09-10
#8楼
得票数 4

有两种不同的形式。

  1. 广告
  2. 广告标识

最初,我被卡住了,因为我没有注意到其他的。所以你的应用程序可以是任何组合,例如,没有广告,但有,广告ID。

在这个文档中,解释了谷歌服务可以包括广告ID,而不是广告的其他原因。分析。

Google Play Services version 4.0 introduced new APIs and an ID for use by advertising and analytics providers. Terms for the use of this ID are below.

而在这个其他的文档中,在例子部分非常明确地指出,广告被理解为通常理解的广告:横幅、弹出式广告、列表中间的瓦片等。

分析合并后的清单,我们可以看到库 play-services-measurement-api正在添加权限,并与分析有关。该库的清单看起来是这样的。

    <uses-permission android:name="com.google.android.gms.permission.AD_ID" />

    <application>
        <service
            android:name="com.google.firebase.components.ComponentDiscoveryService"
            android:exported="false" >
            <meta-data
                android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar"
                android:value="com.google.firebase.components.ComponentRegistrar" />
        </service>
    </application>

请注意,库正在注册analytics.connector.internal.AnalyticsConnectorRegistrar

在这种情况下,广告表格必须标记为 "否",但建议ID表格必须标记为 "是",然后再标记为 "分析 "选项。

我看到有人建议强制清单不合并permission.AD_ID,但这将破坏Analytics。

cutiko 提问于2022-10-12
这实际上是正确的答案--Ads & Advertising ID之间的区别。谢谢你的提示 - 解决了我的问题。5ulo 2022-10-19
这是令人困惑的,因为为什么广告ID会被默认包含在分析中?对我来说,这似乎是一个错误的名称,如果不阅读多个文件是很难弄清楚的 @5ulocutiko 2022-10-19
#9楼
得票数 3

我也收到了今天PlayStore团队发给所有开发者的邮件。要求申报AD_ID权限。 因为我们使用Flutter开发并发布了我们的应用程序,android的目标是API级别31。我正在使用advertising_identifier: ^0.1.1插件来获取广告客户的ID。我还没有在我的清单文件中声明AD_ID权限。

此外,应用程序将其目标API级别更新为31(Android 12),并使用广告标识符/广告标识符客户端信息获取,将需要在清单文件中声明Google Play服务的正常权限,如下所示。

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

参考文献。

https://support.google.com/googleplay/android-developer/answer/6048248?hl=en

Jai Techie 提问于2022-03-15
Jai Techie 修改于2022-03-15
我的应用程序是用Flutter开发的,我没有使用任何广告插件,如advertising_identifier。我应该在不改变AD_ID的情况下在清单文件中添加权限行吗?什么是AD_ID? <uses-permission android:name="com.google.android.gms.permission.AD_ID"/> 对于我的Flutter应用,是否有任何事情需要做"Action requested:宣告你的广告ID权限"?blue492 2022-03-15
AD_ID(Advertising ID)是唯一的ID,用于跟踪用户的移动和使用的应用程序。要访问iOS上的应用程序adID ASIdentifierManger.advertisingIdentifier和Android上的advertisingID。根据google play服务文件,这个AD_ID权限将从2022年4月1日开始对所有设备强制执行。安卓12用户有删除手机广告ID的功能。因此,这就是为什么安卓目标级别到31级以上的用户必须要提供访问AD_ID的权限。如果你的应用程序不包含广告不需要提供。Jai Techie 2022-03-15
#10楼
得票数 2

在我的例子中,我只用Firebase Analytics来处理崩溃报告等。

你可以将你的应用程序设置为使用广告ID。

enter image description here

并只使用分析器。

enter image description here

Cyber 提问于2022-10-29