请遵循集成每种广告类型的说明。然后您可以按照以下方法获取广告填充时的价格:
广告加载成功后,您可以在加载成功回调接口中调用对应广告对象拿到缓存信息"currentAdOfferInfo",通过”currentAdOfferInfo“字典信息key取“ adsource_price ”的值,就能获取该广告的Ecpm 。
“ adsource_price ”返回货币单位与后台账号下的货币单位一致,通常为元(CNY)或美元(USD),具体可以通过adOfferInfo[@"currency"]判断。更多key值具体可以参考官网文档:回调信息说明
示例代码如下:
// RewardedVideo && Banner && Splash && Interstitial && Native
- (void)didFinishLoadingADXItem:(ATADXBaseAd *)item {
// code ...
NSDictionary *dict = [item currentAdOfferInfo];
NSString *ecpm = dict[@"adsource_price"];
NSString *currency = dict[@"currency"];
// code ...
}
如果 Taku 比价胜出,您应该在展示广告之前将第二个出价者的最高价格传递给 Taku。这一步将帮助我们优化收益。
注意:kATADXObjectSecondLossPrice传入的价格货币单位必须为美元
//以激励视频为例,其他广告样式传入对应广告样式对象即可
- (void)sendWinNotification:(ATADXBaseAd *)ad {
// RewardedVideo
NSDictionary *adOfferInfo = [ad currentAdOfferInfo];
ATADXObject *adxObject = adOfferInfo[@"adx_object"];
// 发送win
NSString *secondLossPrice = @"二价价格,货币种类为美元";
// 如果获取到二价价格货币种类为人民币,可通过我们的工具方法获取当前汇率,再去转成美元传入
// NSString *secondLossPrice = [self getExchRateC2UWithRMBPrice:@"人民币元的价格" placementID:@"Your PlacementID"];
[adxObject sendWinNotificationWithInfo:@{
kATADXObjectNetwokName: @"二价广告源名字",
kATADXObjectSecondLossPrice: secondLossPrice
}];
}
// 人民币元转美元
- (NSString *)getExchRateC2UWithRMBPrice:(NSString *)price placementID:(NSString *)placementID {
NSString *tempPriceStr = price;
NSDecimalNumber *priceDecimal = [NSDecimalNumber decimalNumberWithString:price];
NSDecimalNumber *rateDecimal = [NSDecimalNumber decimalNumberWithString:[ATBidInfo getExchRateC2U:placementID]];
if (![priceDecimal isEqualToNumber:NSDecimalNumber.notANumber] && ![rateDecimal isEqualToNumber:NSDecimalNumber.notANumber]) {
tempPriceStr = [[priceDecimal decimalNumberByMultiplyingBy:rateDecimal] stringValue];
}
return tempPriceStr;
}
如果 Taku 竞价失败,您应该在展示广告之前将最高价出价者的价格传递给 Taku。这一步将帮助我们优化收益。
注意:kATADXObjectWinPrice传入的价格货币单位必须为美元
- (void)sendLossNotification:(ATADXBaseAd *)ad {
NSDictionary *adOfferInfo = [ad currentAdOfferInfo];
ATADXObject *adxObject = adOfferInfo[@"adx_object"];
NSString *winPrice = @"竞胜价格,货币种类为美元";
// 如果获取到竞胜价格货币种类为人民币,可通过我们的工具方法获取当前汇率,再去转成美元传入
// NSString *winPrice = [self getExchRateC2UWithRMBPrice:@"人民币元的价格" placementID:@"Your PlacementID"];
// 发送loss
[adxObject sendLossNotificationWithInfo:@{
kATADXObjectNetwokName: @"竞胜广告源名字",
kATADXObjectWinPrice: winPrice,
kATADXObjectLossReason: kATADXObjectLossReasonBidLowPrice,//假如是价格低于其他竞价广告源
}];
}
// 人民币元转美元
- (NSString *)getExchRateC2UWithRMBPrice:(NSString *)price placementID:(NSString *)placementID {
NSString *tempPriceStr = price;
NSDecimalNumber *priceDecimal = [NSDecimalNumber decimalNumberWithString:price];
NSDecimalNumber *rateDecimal = [NSDecimalNumber decimalNumberWithString:[ATBidInfo getExchRateC2U:placementID]];
if (![priceDecimal isEqualToNumber:NSDecimalNumber.notANumber] && ![rateDecimal isEqualToNumber:NSDecimalNumber.notANumber]) {
tempPriceStr = [[priceDecimal decimalNumberByMultiplyingBy:rateDecimal] stringValue];
}
return tempPriceStr;
}
竞败原因:
| 代码 | 描述 |
|---|---|
| kATADXObjectLossReasonBidLowPrice | Topon adx 出价低于价格较高的竞价广告源 |
| kATADXObjectLossReasonLowPrice | adx 的价格低于价格较高的固定价格广告源(非竞价广告) |
// 例如激励,当不需要再使用该缓存时可以主动调用API释放掉该缓存
if (!baseAd) {
[baseAd destroy];
}
// 例如激励,返回广告缓存过期时间戳,单位ms
if (!baseAd) {
NSDate *date = [baseAd getExpirationTimestamp];
}