这是我参与更文挑战的第24天,活动详情查看: 更文挑战
前言
ASA即苹果官方搜索广告Apple Search Ads,是一种付费的App Store推广方式,可使App出现在苹果商店搜索结果的第一位,以此获取精准的用户。
昨天分享了ASA 和ASO的异同 和 ASA 在14.3之后投放自归因AdServices框架;
文章连接:
今天继续填昨天埋下的坑,今天SAS分享也有两个点
- iOS14.3之前的归因方案
- ATT、iAd、SKAdNetwork、AdServices FrameWork之间的区别
iOS14.3之前的归因方案:iAd Framework
iAd Framework用于获取应用安装的ASA归因。用户完成App安装并且打开后,可以通过iAd framework获取安装的ASA归因:安装来自哪个campaign的keyword、素材、点击时间等。获取这个归因数据需要上面idfa的权限
归因数据报告需要满足以下条件:
- 所有操作必须在同一设备上发生。
- 归因仅适用于运行iOS 10或更高版本的用户,并且在过去30天内下载了该应用。
- 必须从App Store列表或Apple Search Ads 展示中进行下载或重新下载。
// Check for iOS 10 attribution implementation
if ([[ADClient sharedClient] respondsToSelector:@selector(requestAttributionDetailsWithBlock:)]) {
NSLog(@"iOS 10 call exists");
[[ADClient sharedClient] requestAttributionDetailsWithBlock:^(NSDictionary *attributionDetails, NSError *error) {
// Look inside of the returned dictionary for all attribution details
NSLog(@"Attribution Dictionary: %@", attributionDetails);
}];
}
复制代码
{
"Version3.1" = {
"iad-attribution" = true;
"iad-org-name" = "org name";
"iad-org-id" = "555555";
"iad-campaign-id" = "12345678";
"iad-campaign-name" = "campaign name";
"iad-purchase-date" = "2020-08-04T17:18:07Z"
"iad-conversion-date" = "2020-08-04T17:18:07Z";
"iad-conversion-type" = "newdownload";
"iad-click-date" = "2020-08-04T17:17:00Z";
"iad-adgroup-id" = "12345678";
"iad-adgroup-name" = "adgroup name";
"iad-country-or-region" = "US";
"iad-keyword" = "keyword";
"iad-keyword-id" = "12345678";
"iad-keyword-matchtype" = "Broad";
"iad-creativeset-id" = "12345678";
"iad-creativeset-name" = "Creative Set name";
}
14.3 之后的
{
"orgId":1234567890,
"campaignId":1234567890,
"conversionType":"Download",
"clickDate":"2021-01-11T06:41Z",
"adGroupId":1234567890,
"countryOrRegion":"US",
"keywordId":12323222,
"creativeSetId":1234567890,
"attribution":true
}
复制代码
AdSupport, ATT、iAd、SKAdNetwork、AdServices FrameWork介绍
AdSupport
参考文档:https//developer.apple.com/documentation/adsupport
在iOS14之前,追踪广告效果基本都是通过IDFA实现的;AdSupport就是用于获取idfa,获取时会判断当前设备是否拥有相关权限。早之前idfa的权限在设置中可以全局控制; 新版本的iOS支持App级别的权限管理(ATT framework)。
- (NSString *)getIdfa {
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
return idfa;
}
复制代码
AppTrackingTransparency framework
参考链接:
iOS 14 之后,苹果出台了强制执行的 App Tracking Transparency(ATT)政策,要求开发者必须明确征得用户的许可,14.5 强制执行; ATT用于管理应用级别的idfa权限申请Api ,调用之后会弹窗让用户单独授权,这样获取idfa的操作成本较大,90%用户都会点击拒绝;
if (@available(iOS 14, *)) {
__typeof__(self) weakSelf = self;
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf refreshStatus];
});
}];
}
复制代码
iAd Framework
用于获取应用安装的ASA归因。用户完成App安装并且打开后,可以通过iAd framework获取安装的ASA归因:安装来自哪个campaign的keyword、素材、点击时间等。获取这个归因数据需要上面idfa的权限
注意,对于某App的单个用户,如果没有重复下载行为,归因数据是不随时间变化的,只需要获取一次。这种归因可以统计不同keyword带来的用户后续的App内行为。
if ([[ADClient sharedClient] respondsToSelector:@selector(requestAttributionDetailsWithBlock:)]) {
[[ADClient sharedClient] requestAttributionDetailsWithBlock:^(NSDictionary *attributionDetails, NSError *error) {
if (error == nil) {
// 归因数据正确
success(attributionDetails);
} else {
// 归因数据错误
gError = error;
}
}];
}
复制代码
AdServices framework
iOS 14.3+新增的功能。类似iAd framework,也是获取应用安装的归因数据,和iAd不同的是不需要idfa授权,而是使用临时token的方式获取归因数据:
- 请求AdServices framework,获取临时token(24h内有效)
- 使用token获取归因数据
这种方式返回的数据,不包含用户行为数据(点击时间),仅仅是安装归因。如果ATT有相关授权,归因数据里才会有用户点击时间。
#import <AdServices/AdServices.h>
- (void) methodToGetToken {
if (@available(iOS 14.3, *)) {
NSError *error;
NSString *token = [AAAttribution attributionTokenWithError:&error];
if (token != nil) {
// 发送POST请求归因数据
}
} else {
// Fallback on earlier versions
}
}
复制代码
参考昨天写的文章:直达连接:苹果搜索广告ASA笔记(中)
SKAdNetwork
参考链接:developer.apple.com/documentati…
SKAdNetwork是区别于iAd的另一套广告归因框架,类似于谷歌的广告联盟:一部分App作为流量提供者(Source Apps),在App内提供广告位;Ad network给这些Source Apps
中的广告位分配广告;需要推广的App(Advertised Apps)通过Ad network投放广告。用户点击广告后,安装并打开相应App,就会触发归因,向network发送数据(这部分数据广告主应该也是可以获取的)
if (@available(iOS 11.3, *)) {
[SKAdNetwork registerAppForAdNetworkAttribution];
}
复制代码
小结
SKAdNetwork,目前理解是最少的,也是这里面最复杂,限制比较多,感觉国内很少有人接入;
看到这里的同学,肯定对ASA应该算有了比较基本的认识了吧;
第一天:我们首先介绍了 ASA的优势
第二天:介绍了14.3之后的AdServices framework
第三天:对 ATT、iAd、SKAdNetwork、AdServices FrameWork 之间关系做了一个梳理;
明天不知道还不会写关于ASA广告相关文章,如果要写,也是下面这几个方面吧
MMP服务 是什么?
第三方广告平台怎么接入,以及他们的优势分析
写一个自归因的demo