Google Advertising ID (广告ID)

广告id是用户特殊的,独特的,可重置的广告id,由Google Play Service 提供,它为用户更好的控制,为开发人员提供简单、标准的系统继续使用你的应用程序,它用于广告目的的匿名标示符和或者重置起标示符或者退出以利益为基础的Google Play的医用程序。

广告 ID 可以通过简单的API在你的应用程序中实现。

重点开发功能

标准和简单—— 广告 标识 是一个标准的 部分 广告和 简单的系统 进行 分析。

让用户控制——用户可以在任何时候设置他们的ID或者退出那些以利益为基础的广告从谷歌的应用程序,他们的偏好适用于广告公司的广告ID。

获取Google Play Service SDK—— 从下载好的Android SDK 的 Extras 目录下找 library 下面的google-play-service.jar

阅读文档和例子——文档例子

作为提醒,请注意,从2014-08-01,新的应用程序和应用程序的更新通过谷歌活动必须在任何广告目的的任何其他持久标识符代替使用广告ID设备上支持的广告

如何检查您的应用程序的合规性通过开发控制台,或在相关的开发政策变化的细节,请看在谷歌游戏开发者帮助中心广告ID的参考

使用广告ID

广告标识是一个独特的但用户复位字符串标识符,让网络广告和其他应用程序的匿名标识一个用户。用户的广告ID是通过API提供的服务提供给应用程序的在Google Play Service中。

用户可以在任何时候设置他们的广告ID,从谷歌设置应用程序在设备上的广告部分的权利。从相同的应用程序,用户还可以选择有针对性的广告的广告ID的基础上,来设置合适的广告跟踪偏好。当用户选择了有针对性的广告,这个广告跟踪偏好是提供给应用程序通过谷歌播放服务API。

应用程序使用广告必须尊检查并尊重用户的习惯和偏好跟踪,还请注意,任何使用广告id的应用程序都必须尊重Google的开发内容政策条款。

ID 格式

Google Play Service 的API 暴露和用户的 ID 为 UUID 的字符串格式。

广告 ID API支持Google Play Service 4.0+ 的设备

对具体设备的支持是基于设备安装的Google Paly Service 的版本

用户的广告ID和广告跟踪优先获得

如果你应用程序想要使用广告ID,你的设备就必须安装Google Play Service

广告ID的API可在 com.google.android.gms.ads.identifier 包在Google Play Service的的库中。 获得用户的 广告 ID和 跟踪 偏好 调用方法 getadvertisingidinfo() 它返回 一个 advertisingidclient 信息 封装 用户当前的 广告 ID和 跟踪 偏好

getadvertisingidinfo()方法的阻塞调用,所以你不能说它在主线程(UI线程)。如果在主线程,该方法抛出illegalstateexception异常。

一旦你取回advertisingidclient对象,您可以使用它的getid()和islimitadtrackingenabled()方法访问的广告ID和广告跟踪偏好。

Method Description
public String getId() Retrieves the advertising ID.
public boolean isLimitAdTrackingEnabled() Retrieves whether the user has limit ad tracking enabled or not.
广告ID API不包括“复位”的方法。 只有用户可以 启动复位 自己的 广告 ID ,在Google Play Service设置中

获取ID要放在子线程中,这种方式是要把google-play-service.jar放在项目的lib下,整个jar大概有3M多,还有一种不需要集成jar的方式见例子二。

  1. import com.google.android.gms.ads.identifier.AdvertisingIdClient;
  2. import com.google.android.gms.ads.identifier.AdvertisingIdClient.Info;
  3. import com.google.android.gms.common.GooglePlayServicesAvailabilityException;
  4. import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
  5. import java.io.IOException;
  6. ...
  7. // Do not call this function from the main thread. Otherwise,
  8. // an IllegalStateException will be thrown.
  9. public void getIdThread() {
  10. Info adInfo = null ;
  11. try {
  12. adInfo = AdvertisingIdClient.getAdvertisingIdInfo(mContext);
  13. } catch (IOException e) {
  14. // Unrecoverable error connecting to Google Play services (e.g.,
  15. // the old version of the service doesn't support getting AdvertisingId).
  16. } catch (GooglePlayServicesAvailabilityException e) {
  17. // Encountered a recoverable error connecting to Google Play services.
  18. } catch (GooglePlayServicesNotAvailableException e) {
  19. // Google Play services is not available entirely.
  20. }
  21. final String id = adInfo.getId();
  22. final boolean isLAT = adInfo.isLimitAdTrackingEnabled();
  23. }

不需要集成google-play-service.jar

这种方式就要求手机本身安装了Google Play Service,这里采用绑定Service和夸进程通信的方式获取广告ID。

创建一个类 AdvertisingIdClient.java

  1. public class AdvertisingIdClient {
  2. public static final class AdInfo {
  3. private final String advertisingId;
  4. private final boolean limitAdTrackingEnabled;
  5. AdInfo(String advertisingId, boolean limitAdTrackingEnabled) {
  6. this .advertisingId = advertisingId;
  7. this .limitAdTrackingEnabled = limitAdTrackingEnabled;
  8. }
  9. public String getId() {
  10. return this .advertisingId;
  11. }
  12. public boolean isLimitAdTrackingEnabled() {
  13. return this .limitAdTrackingEnabled;
  14. }
  15. }
  16. public static AdInfo getAdvertisingIdInfo(Context context) throws Exception {
  17. if (Looper.myLooper() == Looper.getMainLooper())
  18. throw new IllegalStateException(
  19. "Cannot be called from the main thread" );
  20. try {
  21. PackageManager pm = context.getPackageManager();
  22. pm.getPackageInfo( "com.android.vending" , 0 );
  23. } catch (Exception e) {
  24. throw e;
  25. }
  26. AdvertisingConnection connection = new AdvertisingConnection();
  27. Intent intent = new Intent(
  28. "com.google.android.gms.ads.identifier.service.START" );
  29. intent.setPackage( "com.google.android.gms" );
  30. if (context.bindService(intent, connection, Context.BIND_AUTO_CREATE)) {
  31. try {
  32. AdvertisingInterface adInterface = new AdvertisingInterface(
  33. connection.getBinder());
  34. AdInfo adInfo = new AdInfo(adInterface.getId(),
  35. adInterface.isLimitAdTrackingEnabled( true ));
  36. return adInfo;
  37. } catch (Exception exception) {
  38. throw exception;
  39. } finally {
  40. context.unbindService(connection);
  41. }
  42. }
  43. throw new IOException( "Google Play connection failed" );
  44. }
  45. private static final class AdvertisingConnection implements
  46. ServiceConnection {
  47. boolean retrieved = false ;
  48. private final LinkedBlockingQueue<IBinder> queue = new LinkedBlockingQueue<IBinder>(
  49. 1 );
  50. public void onServiceConnected(ComponentName name, IBinder service) {
  51. try {
  52. this .queue.put(service);
  53. } catch (InterruptedException localInterruptedException) {
  54. }
  55. }
  56. public void onServiceDisconnected(ComponentName name) {
  57. }
  58. public IBinder getBinder() throws InterruptedException {
  59. if ( this .retrieved)
  60. throw new IllegalStateException();
  61. this .retrieved = true ;
  62. return (IBinder) this .queue.take();
  63. }
  64. }
  65. private static final class AdvertisingInterface implements IInterface {
  66. private IBinder binder;
  67. public AdvertisingInterface(IBinder pBinder) {
  68. binder = pBinder;
  69. }
  70. public IBinder asBinder() {
  71. return binder;
  72. }
  73. public String getId() throws RemoteException {
  74. Parcel data = Parcel.obtain();
  75. Parcel reply = Parcel.obtain();
  76. String id;
  77. try {
  78. data.writeInterfaceToken( "com.google.android.gms.ads.identifier.internal.IAdvertisingIdService" );
  79. binder.transact( 1 , data, reply, 0 );
  80. reply.readException();
  81. id = reply.readString();
  82. } finally {
  83. reply.recycle();
  84. data.recycle();
  85. }
  86. return id;
  87. }
  88. public boolean isLimitAdTrackingEnabled( boolean paramBoolean)
  89. throws RemoteException {
  90. Parcel data = Parcel.obtain();
  91. Parcel reply = Parcel.obtain();
  92. boolean limitAdTracking;
  93. try {
  94. data.writeInterfaceToken( "com.google.android.gms.ads.identifier.internal.IAdvertisingIdService" );
  95. data.writeInt(paramBoolean ? 1 : 0 );
  96. binder.transact( 2 , data, reply, 0 );
  97. reply.readException();
  98. limitAdTracking = 0 != reply.readInt();
  99. } finally {
  100. reply.recycle();
  101. data.recycle();
  102. }
  103. return limitAdTracking;
  104. }
  105. }
  106. }
  1. new Thread( new Runnable() {
  2. public void run() {
  3. try {
  4. AdInfo adInfo = AdvertisingIdClient
  5. .getAdvertisingIdInfo(MainActivity. this );
  6. advertisingId = adInfo.getId();
  7. optOutEnabled = adInfo.isLimitAdTrackingEnabled();
  8. // Log.i("ABC", "advertisingId" + advertisingId);
  9. // Log.i("ABC", "optOutEnabled" + optOutEnabled);
  10. } catch (Exception e) {
  11. e.printStackTrace();
  12. }
  13. mHandler.sendEmptyMessage(HANDEL_ADID);
  14. }
  15. }).start();
Google Advertising ID (广告ID)广告id是用户特殊的,独特的,可重置的广告id,由Google Play Service 提供,它为用户更好的控制,为开发人员提供简单、标准的系统继续使用你的应用程序,它用于广告目的的匿名标示符和或者重置起标示符或者退出以利益为基础的Google Play的医用程序。广告 ID 可以通过简单的API在你的应用程序中实现。
如何重置 Google 广告 ID How to reset your advertising ID on Android The advertising ID is a unique anonymous id entifier on Android devices that is being used for advertising purposes. App developers can use...
GA ID :广告 id ,即 Google Advertising ID (GA ID ),是由 Google Play service提供给用户的可以重置的唯一广告 id ,通常也被用来作为设备的唯一标识,用于数据收集。但用户手机上必须安装有 google play服务,并且网络可以访问 google ,才可以获取到该 id 。(该广告 id 也被称为AA ID —— Android Advertising ID )。由于可以被重置,因此是非永久性标识符。 设备能翻墙,安装 Google play,并保证 Google Play 服务可用 接口调用 get Advertising Id Info 需要在子线程,在主线程调用会抛 IllegalStateException 异常 3. 获取示例 public class Google Advertising Id Task extends AsyncTask<Vo id , Vo id , String> { private Context c 两者都可以 使用 ! play-services-ads- id entifier 代替 play-services-ads,只导入广告 ID 类,而不导入 Google Mobile Ads/AdMob,减少包体积。 注意:get Advertising Id Info 方法是耗时 方法1. 通过谷歌server的jar包来获取,整个jar包太大.12mb.放弃 方法2. 通过basement的jar包来获取.比较小.300来k的样子,很容易获取(注意:此方法需要在子线程执行) 获取jar包 try { Advert...
Android Q获取设备唯一 ID (UD ID \GU ID \UU ID )一、 简介 1.问题背景2.关键技术二、解决方案2.1 官方推荐方案 (4种)2.2 研究方案1——GU ID 方案2.3 研究方案2——数字版权管理(DRM)方案2.4 研究方案3——自定义 ID 硬件信息拼凑方案2.5 研究方案4——移动安全联盟方案2.6 研究方案5——数字联盟可信 ID 方案三、方案对比3.1 评估准则3.2 决策分析四、总结 一、 简介 1.问题背景 **技术现状:**存储设备需要用唯一设备 ID (Unique Device Id en
advertising .csv是一个用于存储广告数据的CSV文件。CSV是逗号分隔值的缩写,是一种常用的存储表格数据的文件格式。 广告数据通常包括广告的各种信息,如广告的名称、类型、投放平台、时长、花费等等。这些信息可以在 advertising .csv文件中以表格的形式进行存储,每一行代表一个广告,每一列代表一个属性。 通过 使用 advertising .csv文件,我们可以进行广告数据的分析和处理。可以 使用 各种数据分析工具,例如Excel、Python等,来读取这个文件并对数据进行处理。可以对广告的花费进行统计和汇总,计算广告的ROI(投资回报率),了解哪些广告花费较高并且效果较好。 广告数据的分析可以帮助公司制定更加有效的广告策略。通过分析广告的数据,可以发现不同类型的广告在不同平台上的表现,进而优化广告投放的策略。此外,还可以通过对广告数据的分析,了解不同广告之间的关联性,找到可能存在的联动效应。 总之, advertising .csv是一个用于存储广告数据的文件,通过对该文件的分析可以了解广告的各种信息和效果,以优化广告投放策略,提高广告效果。