本指南介绍了开发者自行统计广告链路中常见事件节点的方法,涵盖了用于广告错误排查、应用调用SDK接口行为等场景。
1.广告加载
时机:ATAdManager单例对象的loadADWithPlacementID方法调用后,代码示例如下
[[ATAdManager sharedManager] loadADWithPlacementID:SplashPlacementID
extra:loadConfigDict
delegate:self
containerView:[self footLogoView]];
//在这里统计广告加载,需要根据广告位ID区分
| 常见用途 |
说明 |
| 计数 |
统计发起加载次数,注意由于SDK不支持同一个广告位多次发起加载,SDK自身统计会过滤某些非法加载请求数,因此该指标通常用于应用侧统计load次数 |
2.广告加载结果
2.1 广告位与广告源
一次广告加载包含的失败信息分为两个维度,一是广告源维度,二是广告位维度。如下:
@protocol ATAdLoadingDelegate<NSObject>
/// 广告位维度,加载成功
- (void)didFinishLoadingADWithPlacementID:(NSString *)placementID;
/// 广告位维度,加载失败,不包含具体每一层级广告源失败信息
- (void)didFailToLoadADWithPlacementID:(NSString*)placementID
error:(NSError*)error;
@optional
/// 广告位维度,获得展示收益
- (void)didRevenueForPlacementID:(NSString *)placementID
extra:(NSDictionary *)extra;
/// 广告源维度,某一个非竞价广告源开始加载
- (void)didStartLoadingADSourceWithPlacementID:(NSString *)placementID
extra:(NSDictionary*)extra;
/// 广告源维度,某一个非竞价广告源加载成功
- (void)didFinishLoadingADSourceWithPlacementID:(NSString *)placementID
extra:(NSDictionary*)extra;
/// 广告源维度,某一个非竞价广告源加载失败
- (void)didFailToLoadADSourceWithPlacementID:(NSString*)placementID
extra:(NSDictionary*)extra
error:(NSError*)error;
/// 广告源维度,某一个竞价广告源开始加载
- (void)didStartBiddingADSourceWithPlacementID:(NSString *)placementID
extra:(NSDictionary*)extra;
/// 广告源维度,某一个竞价广告源加载成功
- (void)didFinishBiddingADSourceWithPlacementID:(NSString *)placementID
extra:(NSDictionary*)extra;
/// 广告源维度,某一个竞价广告源加载失败
- (void)didFailBiddingADSourceWithPlacementID:(NSString*)placementID
extra:(NSDictionary*)extra
error:(NSError*)error;
@end
2.2 竞价与非竞价
一次load操作通常会请求多个广告源,例如如下广告位配置,包含了红框中的竞价广告源与其余非竞价广告源,如下图所示:

2.3 常用统计事件
2.3.1 广告位加载失败(所有广告类型)
//该协议属于ATAdLoadingDelegate
- (void)didFailToLoadADWithPlacementID:(NSString*)placementID
error:(NSError*)error {
//在这里收集信息统计
}
| 常见用途 |
说明 |
| 计数 |
统计加载失败次数 |
| 失败上报 |
广告位整体失败原因,可参考错误码说明 |
| 常用字段 |
类型 |
说明 |
| error.domain |
NSErrorDomain |
错误归属 |
| error.userInfo |
NSDictionary<NSErrorUserInfoKey, id> * |
额外信息,使用时请自行转换类型 |
| error.localizedDescription |
NSString * |
错误本地化描述 |
| error.description |
NSString * |
错误描述 |
注意事项:这个回调看不到每一层广告源具体的失败原因,包括第三方SDK给的失败原因,如果想要收集第三方SDK的失败原因,请继续看下面的文档。
2.3.2 广告源加载失败(所有广告类型)
//以下协议属于ATAdLoadingDelegate
/// 广告源维度,某一个竞价广告源加载失败
- (void)didFailBiddingADSourceWithPlacementID:(NSString*)placementID
extra:(NSDictionary*)extra
error:(NSError*)error {
//在这里收集信息统计
}
/// 广告源维度,某一个非竞价广告源加载失败
- (void)didFailToLoadADSourceWithPlacementID:(NSString*)placementID
extra:(NSDictionary*)extra
error:(NSError*)error {
//在这里收集信息统计
}
| 常用字段 |
类型 |
说明 |
| error.domain |
NSErrorDomain |
错误归属 |
| error.userInfo |
NSDictionary<NSErrorUserInfoKey, id> * |
额外信息,使用时请自行转换类型 |
| error.localizedDescription |
NSString * |
错误本地化描述 |
| error.description |
NSString * |
错误描述 |
| extra[@"req_id"] |
NSString * |
聚合SDK请求ID |
| extra[@"adsource_id"] |
NSString * |
聚合SDK广告源ID |
| extra[@"network_firm_id"] |
NSString * |
聚合SDK广告平台ID |
| 常见用途 |
说明 |
| 计数 |
统计各广告源失败次数 |
| 失败上报 |
广告位整体失败原因,可参考错误码说明 ,以及对应第三方广告平台错误码文档中的说明 |
2.3.3 广告位加载成功(所有广告类型都支持,但不含开屏广告的超时信息,如果需要开屏广告的超时信息,请看下面章节单独有介绍)
//以下协议属于ATAdLoadingDelegate
- (void)didFinishLoadingADWithPlacementID:(NSString *)placementID {
//在这里收集信息统计
}
2.3.4 广告源加载成功(所有广告类型)
//以下协议属于ATAdLoadingDelegate
/// 广告源维度,某一个竞价广告源加载成功
- (void)didFinishBiddingADSourceWithPlacementID:(NSString *)placementID
extra:(NSDictionary*)extra {
//在这里收集信息统计
}
/// 广告源维度,某一个非竞价广告源加载成功
- (void)didFinishLoadingADSourceWithPlacementID:(NSString *)placementID
extra:(NSDictionary*)extra {
//在这里收集信息统计
}
| 常用字段 |
类型 |
说明 |
| extra[@"req_id"] |
NSString * |
聚合SDK请求ID |
| extra[@"adsource_id"] |
NSString * |
聚合SDK广告源ID |
| extra[@"network_firm_id"] |
NSString * |
聚合SDK广告平台ID |
//以下协议属于ATSplashDelegate
- (void)didFinishLoadingSplashADWithPlacementID:(NSString *)placementID isTimeout:(BOOL)isTimeout {
if (!isTimeout) {
//加载成功,没有超时,在此记录
}else {
//加载成功,但超时了 ,在此记录
}
}
| 常见用途 |
说明 |
| 计数 |
统计加载成功且含有超时信息的次数 |
//以下协议属于ATSplashDelegate
- (void)didTimeoutLoadingSplashADWithPlacementID:(NSString *)placementID {
//加载超时了,加载结果此处还不知道,后续是成功还是失败,需要关注其他事件。例如,加载失败仍然可以通过2.3.1小节的方法进行上报
}
| 常见用途 |
说明 |
| 计数 |
统计加载超时次数,超时指的是通过聚合API设置的kATSplashExtraTolerateTimeoutKey |
注意事项:开屏广告相关流程前往这里了解详细信息。
3. 广告展示结果
3.1 广告展示成功,获得展示收益
请参考:https://help.takuad.com/docs/rgJOQXRU
3.2 广告展示失败
3.2.1 开屏广告
/// 该协议属于ATSplashDelegate
- (void)splashDidShowFailedForPlacementID:(NSString*)placementID error:(NSError *)error extra:(NSDictionary *)extra {
//在这里收集信息并上报
}
3.2.2 插屏广告
/// 该协议属于ATInterstitialDelegate
- (void)interstitialFailedToShowForPlacementID:(NSString *)placementID error:(NSError *)error extra:(NSDictionary *)extra {
//在这里收集信息并上报
}
3.3.3 激励视频
/// 该协议属于ATRewardedVideoDelegate
- (void)rewardedVideoDidFailToPlayForPlacementID:(NSString*)placementID error:(NSError *)error extra:(NSDictionary *)extra {
//在这里收集信息并上报
}
3.2.4 广告展示失败相关说明 (横幅广告、原生广告不支持获取原因)
| 常用字段 |
类型 |
说明 |
| error.domain |
NSErrorDomain |
错误归属 |
| error.userInfo |
NSDictionary<NSErrorUserInfoKey, id> * |
额外信息,使用时请自行转换类型 |
| error.localizedDescription |
NSString * |
错误本地化描述 |
| error.description |
NSString * |
错误描述 |
| extra[@"request_id"] |
NSString * |
聚合SDK请求ID |
| extra[@"id"] |
NSString * |
聚合SDK唯一展示ID |
| extra[@"adsource_id"] |
NSString * |
聚合SDK广告源ID |
| extra[@"network_firm_id"] |
NSString * |
聚合SDK广告平台ID |
| 常见用途 |
说明 |
| 计数 |
统计展示失败次数 |
| 失败上报 |
展示失败原因,可参考错误码说明 ,以及对应第三方广告平台错误码文档中的说明 |