AdServices归因和iAd归因集成
前提:AdServices的集成必须是iOS14.3以上版本,旧版本使⽤ iAd 归因框架。
第一步:找到framework的添加入口
第二步:分别搜索AdServices.framework、AdSupport.framework、iAd.framework,进行添加
第三步:在Build Phases中Link Binary With Libraries 修改 AdServices.framework、AdSupport.framework、iAd.framework的类型为Optional
第四部:将AdServices.framework、AdSupport.framework、iAd.framework的头文件加入到项目
第五步:代码集成
5.1 AdServices获取token
if (@available(iOS 14.3, *)) {NSError *error;NSString *token = [AAAttribution attributionTokenWithError:&error];if (token != nil) {// 发送POST请求归因数据[self sendToken:[self getANullableString:@"token" content:token] completeBlock:^(NSDictionary *attrData) {NSLog(@"成功==:14.3+ Dict: %@", attrData);//可将数据发送给服务端}];}} else {// 老版本请求if ([[ADClient sharedClient] respondsToSelector:@selector(requestAttributionDetailsWithBlock:)]) {NSLog(@"LogAds:iAd called");[[ADClient sharedClient] requestAttributionDetailsWithBlock:^(NSDictionary *attrData, NSError *error) {//异步,会延后NSLog(@"成功:14- Dict: %@", attrData);//可将数据发送给服务端// ... ...}];}}
5.2 AdServices获取归因数据
/** 读取可能为空的字符串*/
-(nullable NSString *)getANullableString:(NSString *)desc content:(NSString *)content{if(content == nil){return @"";}return [NSString stringWithFormat:@"%@", content];
}/** 发送归因token得到数据 */
-(void)sendToken:(NSString *)token completeBlock:(void(^)(NSDictionary* data))completeBlock{NSString *url = [NSString stringWithFormat:@"https://api-adservices.apple.com/api/v1/"];NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];request.HTTPMethod = @"POST";[request addValue:@"text/plain" forHTTPHeaderField:@"Content-Type"];NSData* postData = [token dataUsingEncoding:NSUTF8StringEncoding];[request setHTTPBody:postData];NSURLSession *session = [NSURLSession sharedSession];NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {NSDictionary * result = NULL;if (error) {//请求失败NSLog(@"请求失败LogAds:sendToken ERR");if (completeBlock) {NSMutableDictionary *nulldict = [NSMutableDictionary dictionary];completeBlock(nulldict);}}else{// 请求成功NSLog(@"请求成功");NSError *resError;NSMutableDictionary *resDic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&resError];result = [[NSDictionary alloc] initWithDictionary:resDic];if (completeBlock) {completeBlock(result);}}}];[dataTask resume];
}
5.3 AdServices 返回归因数据包示例
经测试,IDFA允许用户跟踪后,得到的数据是详细数据包
{adGroupId = 1234567890;attribution = 1;campaignId = 1234567890;clickDate = "2022-04-27T07:59Z";conversionType = Download;countryOrRegion = US;creativeSetId = 1234567890;keywordId = 12323222;orgId = 1234567890;
}
未允许,得到的数据是标准数据包,没有clickDate字段
{"attribution": true,"orgId": 40669820,"campaignId": 542370539,"conversionType": "Download","adGroupId": 542317095,"countryOrRegion": "US","keywordId": 87675432,"creativeSetId": 542317136
}
5.4 iAd 代码
if ([[ADClient sharedClient] respondsToSelector:@selector(requestAttributionDetailsWithBlock:)]) {NSLog(@"LogAds:iAd called");[[ADClient sharedClient] requestAttributionDetailsWithBlock:^(NSDictionary *attrData, NSError *error) {//异步,会延后NSLog(@"成功:14- Dict: %@", attrData);//将数据发送给服务端 }];
}
5.5 iAd返回归因数据包示例
{"iad-adgroup-id" = 1234567890;"iad-adgroup-name" = AdGroupName;"iad-attribution" = true;"iad-campaign-id" = 1234567890;"iad-campaign-name" = CampaignName;"iad-click-date" = "2022-04-27T07:31:36Z";"iad-conversion-date" = "2022-04-27T07:31:36Z";"iad-conversion-type" = Download;"iad-country-or-region" = US;"iad-creativeset-id" = 1234567890;"iad-creativeset-name" = CreativeSetName;"iad-keyword" = Keyword;"iad-keyword-id" = 12323222;"iad-keyword-matchtype" = Broad;"iad-lineitem-id" = 1234567890;"iad-lineitem-name" = LineName;"iad-org-id" = 1234567890;"iad-org-name" = OrgName;"iad-purchase-date" = "2022-04-27T07:31:36Z";
};
AdServices归因和iAd归因集成相关推荐
- 归因分析_归因分析:如何衡量影响? (第2部分,共2部分)
归因分析 By Lisa Cohen, Ryan Bouchard, Jane Huang, Daniel Yehdego and Siddharth Kumar 由 丽莎·科恩 , 瑞安布沙尔 , ...
- Salesforce市场活动及其渠道归因
Salesforce 客户关系管理(CRM)软件非常受业务人员的欢迎. Salesforce的软件即服务(SaaS)平台为企业提供了销售自动化,case管理和任务管理的功能,使客户能够跟踪自己的cas ...
- 多渠道归因分析:互联网的归因江湖(二)
在公众号[PMCoder之路]看到互联网归因用法上的一些有趣案例,搬运一些案例. 1 互联网归因的江湖混战(一) 2 不懂归因,也许你广告还没入门 3 互联网归因混战江湖(二)-应用归因详细说明 4 ...
- 广告归因:是什么和为什么
文章目录 归因的作用 归因原理 电梯广告归因 曝光和转化 归因监控平台 再谈归因的作用 什么是归因 参考文章 归因是我们在进行投放的过程中,经常用到的广告术语.归因是什么?我们为什么要研究它?下面就来 ...
- 转:结构化风险模型与业绩归因
Barra结构化多因子风险模型是目前指数增强和阿尔法对冲基金应用比较广泛的风险分析工具,作为一位民科量化大师,不学一下Barra的话会显得自己比较Low.于是我花了几个小时走马观花,分享一下心得. 结 ...
- 渠道触点归因、推广来源追踪
消费者触点 消费者与企业的产品或服务.品牌.内容或信息发生接触的任意位置.触点作为用户获取来源叫渠道. 触点归因 研究如何获客贡献在参与的各个触点或渠道间进行分配的过程. 归因作用 客观评价触点或渠道 ...
- 多渠道归因分析(Attribution):传统归因(一)
文章目录 1 归因分析 2 传统归因分析方法 2.1 传统归因分析 2.2.1 最终互动归因模型 2.2.2 最终非直接点击归因模型 2.2.3 最终AD点击归因 2.2.4首次互动归因 2.2.5 ...
- 归因分析指南v1.0
归因是一个跨领域的方法,在数据分析.深度学习.广告营销.心理学.投资都有相关的理论研究.趁周末时间,完成了归因指南的第一个版本(以后还会不断迭代的),分享给大家. - 什么是归因 attributio ...
- 【深度学习】【积分梯度】深度网络的公理归因(Axiomatic Attribution for Deep Networks)
深度网络的公理归因 Axiomatic Attribution for Deep Networks 相关博客 [自然语言处理][可解释性]NKB:用于预训练Transformers的神经知识银行 [自 ...
最新文章
- JSON.stringify()
- elasticsearch 分片_Elasticsearch教程:动手实践
- 人脑动态功能网络连接模式能够鉴别个体并预测其认知功能
- VMware 虚拟机
- python 调用c++ 传输图片
- 网络推广团队介绍网站页面优化时需要注意什么细节?
- PAT(乙级) 1002 写出这个数 (20point(s)) Python
- 此beta版本目前不接受任何新测试员_ASO行业资讯|苹果官方App测试工具TestFlight
- 类与对象的演练 好好学习的学生 java 1613807015
- mysql数据库 day04
- ubuntu安装python_与你分享Ubuntu修改源和安装pycharm
- onestage方法_FCOS : 找到诀窍了,anchor-free的one-stage目标检测算法也可以很准 | ICCV 2019...
- [转] Java/JSP中使用JDBC连接SQL Server 2005
- MySQL经典书籍推荐
- Android系统工程模式启动过程详解
- Win10运行pip install image-similarity-measures失败的处理方式(GDAL和rasterio安装)
- php音乐云盘,百度云盘音乐、文件、图片外链的三个方法总结
- java8学习整理二
- 禅道项目管理软件是什么(一)
- 想从事程序员,对学历要求高吗
热门文章
- 从零开始学人脸检测之Retinaface篇(内含魔改版GhostNet+mbv2)
- Python代码国际化
- 和数集团:什么是区块链技术?
- 什么是以太网供电POE
- python 执行命令,并获取结果及执行状态(os.popen、subprocess.Popen、os.system)
- python for循环换行_python for循环换行_day08-循环之for循环
- 仿《雷霆战机》飞行射击手游开发--子弹、跟踪导弹和激光
- inport tensorflow 出错
- 03、数组中的重复数字
- 114DNS 出现故障,服务全线飘红!