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的方式见例子二。
-
import
com.google.android.gms.ads.identifier.AdvertisingIdClient;
-
import
com.google.android.gms.ads.identifier.AdvertisingIdClient.Info;
-
import
com.google.android.gms.common.GooglePlayServicesAvailabilityException;
-
import
com.google.android.gms.common.GooglePlayServicesNotAvailableException;
-
import
java.io.IOException;
-
...
-
-
-
-
public
void
getIdThread() {
-
-
Info adInfo =
null
;
-
try
{
-
adInfo = AdvertisingIdClient.getAdvertisingIdInfo(mContext);
-
-
}
catch
(IOException e) {
-
-
-
-
}
catch
(GooglePlayServicesAvailabilityException e) {
-
-
-
}
catch
(GooglePlayServicesNotAvailableException e) {
-
-
}
-
final
String id = adInfo.getId();
-
final
boolean
isLAT = adInfo.isLimitAdTrackingEnabled();
-
}
不需要集成google-play-service.jar
这种方式就要求手机本身安装了Google Play Service,这里采用绑定Service和夸进程通信的方式获取广告ID。
创建一个类 AdvertisingIdClient.java
-
public
class
AdvertisingIdClient {
-
public
static
final
class
AdInfo {
-
private
final
String advertisingId;
-
private
final
boolean
limitAdTrackingEnabled;
-
-
AdInfo(String advertisingId,
boolean
limitAdTrackingEnabled) {
-
this
.advertisingId = advertisingId;
-
this
.limitAdTrackingEnabled = limitAdTrackingEnabled;
-
}
-
-
public
String getId() {
-
return
this
.advertisingId;
-
}
-
-
public
boolean
isLimitAdTrackingEnabled() {
-
return
this
.limitAdTrackingEnabled;
-
}
-
}
-
-
public
static
AdInfo getAdvertisingIdInfo(Context context)
throws
Exception {
-
if
(Looper.myLooper() == Looper.getMainLooper())
-
throw
new
IllegalStateException(
-
"Cannot be called from the main thread"
);
-
-
try
{
-
PackageManager pm = context.getPackageManager();
-
pm.getPackageInfo(
"com.android.vending"
,
0
);
-
}
catch
(Exception e) {
-
throw
e;
-
}
-
-
AdvertisingConnection connection =
new
AdvertisingConnection();
-
Intent intent =
new
Intent(
-
"com.google.android.gms.ads.identifier.service.START"
);
-
intent.setPackage(
"com.google.android.gms"
);
-
if
(context.bindService(intent, connection, Context.BIND_AUTO_CREATE)) {
-
try
{
-
AdvertisingInterface adInterface =
new
AdvertisingInterface(
-
connection.getBinder());
-
AdInfo adInfo =
new
AdInfo(adInterface.getId(),
-
adInterface.isLimitAdTrackingEnabled(
true
));
-
return
adInfo;
-
}
catch
(Exception exception) {
-
throw
exception;
-
}
finally
{
-
context.unbindService(connection);
-
}
-
}
-
throw
new
IOException(
"Google Play connection failed"
);
-
}
-
-
private
static
final
class
AdvertisingConnection
implements
-
ServiceConnection {
-
boolean
retrieved =
false
;
-
private
final
LinkedBlockingQueue<IBinder> queue =
new
LinkedBlockingQueue<IBinder>(
-
1
);
-
-
public
void
onServiceConnected(ComponentName name, IBinder service) {
-
try
{
-
this
.queue.put(service);
-
}
catch
(InterruptedException localInterruptedException) {
-
}
-
}
-
-
public
void
onServiceDisconnected(ComponentName name) {
-
}
-
-
public
IBinder getBinder()
throws
InterruptedException {
-
if
(
this
.retrieved)
-
throw
new
IllegalStateException();
-
this
.retrieved =
true
;
-
return
(IBinder)
this
.queue.take();
-
}
-
}
-
-
private
static
final
class
AdvertisingInterface
implements
IInterface {
-
private
IBinder binder;
-
-
public
AdvertisingInterface(IBinder pBinder) {
-
binder = pBinder;
-
}
-
-
public
IBinder asBinder() {
-
return
binder;
-
}
-
-
public
String getId()
throws
RemoteException {
-
Parcel data = Parcel.obtain();
-
Parcel reply = Parcel.obtain();
-
String id;
-
try
{
-
data.writeInterfaceToken(
"com.google.android.gms.ads.identifier.internal.IAdvertisingIdService"
);
-
binder.transact(
1
, data, reply,
0
);
-
reply.readException();
-
id = reply.readString();
-
}
finally
{
-
reply.recycle();
-
data.recycle();
-
}
-
return
id;
-
}
-
-
public
boolean
isLimitAdTrackingEnabled(
boolean
paramBoolean)
-
throws
RemoteException {
-
Parcel data = Parcel.obtain();
-
Parcel reply = Parcel.obtain();
-
boolean
limitAdTracking;
-
try
{
-
data.writeInterfaceToken(
"com.google.android.gms.ads.identifier.internal.IAdvertisingIdService"
);
-
data.writeInt(paramBoolean ?
1
:
0
);
-
binder.transact(
2
, data, reply,
0
);
-
reply.readException();
-
limitAdTracking =
0
!= reply.readInt();
-
}
finally
{
-
reply.recycle();
-
data.recycle();
-
}
-
return
limitAdTracking;
-
}
-
}
-
}
-
new
Thread(
new
Runnable() {
-
public
void
run() {
-
try
{
-
AdInfo adInfo = AdvertisingIdClient
-
.getAdvertisingIdInfo(MainActivity.
this
);
-
advertisingId = adInfo.getId();
-
optOutEnabled = adInfo.isLimitAdTrackingEnabled();
-
-
-
}
catch
(Exception e) {
-
e.printStackTrace();
-
}
-
mHandler.sendEmptyMessage(HANDEL_ADID);
-
}
-
}).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是一个用于存储广告数据的文件,通过对该文件的分析可以了解广告的各种信息和效果,以优化广告投放策略,提高广告效果。