没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
CAID 是 “Customer Acquisition Identifier”(客户获取标识符)的缩写。在苹果生态系统中,归因是一种确定用户是通过何种渠道(如广告、营销活动等)安装应用程序或进行购买行为的方法。它有助于广告商和开发者了解营销活动的效果,精准评估每个渠道的价值。 例如,一个游戏开发者在多个渠道投放了广告,包括社交媒体广告、应用商店内的广告等。通过 CAID 归因,开发者可以知道用户是从哪个具体广告渠道下载了游戏,是因为看到 Facebook 上的广告,还是在 App Store 的某个推荐位广告而下载的。
资源推荐
资源详情
资源评论
CAID API 接入⽂档
Status: v1.16
1.
概述
CAID 作为 iOS 系统上广告行业的统设备标识 ID,目前对外提供 API 的接入方式,这里描述 API 的接口协议。
2.
接入准备
对于需要接入 CAID API 的接入方,需要向 CAID 广告标识服务器申请接入,接入成功后会分配得到两个 ID,分别
为 dev_id 和公钥 pub_key。接入时需要传入对应的 dev_id,并使用公钥对上报的信息进行 RSA 加密上报密文,
收到 API 返回的响应后进行 RSA 解密,从而获得最终结果。
建议都将参数上传到自己的服务端,从服务端接入 API,客户端接入不可控,容易更新不及时。服务端调用加解密
使用分配的 public_for_api.pem 文件中 key 值,客户端调用加解密使用 pub_for_sdk 证书。
由于带宽资源有限,接入方同一台设备(相同的 idfa)平均每天请求量不可超过 5 次,可通过缓存 CAID 方式优
化,缓存时间不超过 24 小时,若不符合以上规范,有可能会导致 CAID 返回结果丢包、延迟等情况。若极端过量
请求导致服务器宕机等问题,CAID 广告标识服务器将下线请求密钥,不再接受申请 CAID 服务。
3.
协议
3.1 CAID 获取接⼝
3.1.1 请求
3.1.2 响应
解密 data 之后返回格式如下,返回信息使用及版本迭代详见第 4 章节
3.2 测试
为获得最完整的结果响应,调用方可以直接请求线上环境来进行测试验证,示例结果详见附录。
4.
应用与规划
4.1 版本迭代
可以看到解密接口返回的 data 字段,我们可以获得 CAID 明文和版本号的数组。算法升级期间会下发两个 CAID,
分别表示当前版本的 CAID 和上一个版本的 CAID,版本号为升级对应的日期。接口最多返回两个版本的 CAID 信
息。
举个例子:
目前我们通过接口返回如下格式的解密之后的信息,表示当前该设备 CAID 为
bfb405dc6c3b16e8b1ba40bcd3a7c7c4,对应版本号为 20200901。
三个月之后我们升级并发布新版本 CAID,那么返回的信息就会变为如下,表示当前版本该设备 CAID 为
cf23456ab756789fe2ba8656c6c3b6b3,上一个版本为 9 月发布的 bfb405dc6c3b16e8b1ba40bcd3a7c7c4
再过三个月之后我们升级并发布更新版本的 CAID,那么返回的信息就会变为如下,表示当前版本该设备 CAID 为
aaff5567b157c9009dd235ff75abc431,上一个版本为 12 月发布的 cf23456ab756789fe2ba8656c6c3b6b3
4.2 业务应用
调用方在收到上述解密之后的两个版本的 CAID 后,针对具体的业务场景,我们建议:
1. 对于媒体请求广告的场景,建议媒体侧在请求广告时携带最新版本的 CAID 来作为设备标识。
2. 对于广告效果归因场景,建议广告主侧或者平台方分别用这两个版本的 ID 去与流量上的设备来尝试关联,任一
匹配上即可。
5.
附录
5.1 设备终端公共信息采集字段
5.1.1 设备启动时间
5.1.2 国家
static time_t bootSecTime(){
struct timeval boottime;
size_t len = sizeof(boottime);
int mib[2] = { CTL_KERN, KERN_BOOTTIME };
if( sysctl(mib, 2, &boottime, &len, NULL, 0) < 0 )
{
return 0;
}
return boottime.tv_sec;
}
+(NSString *)bootTimeInSec
{
return [NSString stringWithFormat:@"%ld",bootSecTime()];
}
+(NSString *)countryCode
{
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey:NSLocaleCountryCode];
return countryCode;
}
5.1.3 语言
5.1.4 设备名称
iOS15 及以前版本
正常使用获取到的真实设备名,如“xx 的 iPhone”,作为原始值,取其小写 MD5 值后传入。
iOS16 及以后版本
通过 UIDevice 获取设备名称时,会返回通用设备名称,iPhone 类设备返回“iPhone”,iPad 类设备返回
“iPad”。广协侧已评估过此影响,不影响 CAID 的设备识别度,无需因此额外申请权限获取真实设备名称。所有
iOS16 及之后版本的设备(无论是否可以取到真实设备名),均严格按照“iPhone”或“iPad”作为原始值,取其
小写 MD5 值后传入。
如下表所示:
iOS
取值类型
原始值(样例)
传入值
iOS15 及之前版本
用户定义的设备名称
“xx 的 iPhone”
小写 md5("xx 的 iPhone")
iOS16 及之后版本
通用设备名称
“iPhone”
或
“iPad”
小写 md5("iPhone")
或
小写 md5("iPad")
注:
1、该值的原始值和 MD5 值均严格区分大小写,请严格按照上表大小写格式计算原始值的 MD5,并传入小写
MD5 值。
2、所有 iOS16 及之后版本的设备(无论是否可以取到真实设备名),均严格按照“iPhone”或“iPad”作为原
始值,取其小写 MD5 值后传入。
参考资料:https://developer.apple.com/documentation/uikit/uidevice/1620015-name
+(NSString *)language {
NSString *language;
NSLocale *locale = [NSLocale currentLocale];
if ([[NSLocale preferredLanguages] count] > 0) {
language = [[NSLocale preferredLanguages]objectAtIndex:0];
} else {
language = [locale objectForKey:NSLocaleLanguageCode];
}
return language;
}
+(NSString *)deviceName
{
if ([[[UIDevice currentDevice] name] length] == 0) {
return nil;
}
//常的MD5 32位写算法,不再单独给出
return [CAIDMD5Util md5HexDigest:[[UIDevice currentDevice] name]];
}
剩余15页未读,继续阅读
资源评论
做上火箭的羊
- 粉丝: 80
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功