C2S(Client-to-Server)竞价是一种客户端竞价机制,允许广告适配器在客户端进行实时竞价,并将竞价结果回传给广告平台。本文档详细介绍了如何在自定义广告适配器中实现C2S竞价功能。
- SDK版本 >= 6.4.94
- 需要第三方广告SDK支持获取价格
- 已参考文档完成自定义 Adapter 的接入
在自定义Adapter对应的Delegate类中获取第三方广告SDK返回的价格,将价格通过我们指定的 Key 组装至字典对象,并随着广告加载成功事件将价格传递给Taku SDK,您可以通过以下 Key 来组装价格字典:
Key Value类型 说明 ATAdSendC2SCurrencyTypeKey NSInteger 币种的枚举值
美元=1
人民币元=2
人民币分=3ATAdSendC2SBidPriceKey NSString(字符串) 价格 举例如下:
objc 复制代码//通过第三方广告 SDK 获取到了价格 NSInteger ecpm = [splashAd ecpm]; //用于保存C2S信息的字典 NSMutableDictionary *infoDic = [NSMutableDictionary dictionary]; //转为字符串,根据情况选择对应的精度 NSString *priceStr = [NSString stringWithFormat:@"%ld",ecpm]; NSString *logOriginalString = [NSString stringWithFormat:@"C2S Original priceStr :%@",priceStr]; //参数检查 if ([priceStr doubleValue] < 0) { priceStr = @"0"; } //传入价格字符串 [infoDic AT_setDictValue:priceStr key:ATAdSendC2SBidPriceKey]; //根据第三方广告 SDK 的价格单位,传入币种 [infoDic AT_setDictValue:@(ATBiddingCurrencyTypeCNYCents) key:ATAdSendC2SCurrencyTypeKey]; //此时infoDic就是最终所需要的字典了
您可以根据不同广告类型的自定义Adapter,通过以下方法来传入含有价格信息字典:
方法名 参数说明 方法描述 - (void)atOnSplashAdLoadedExtra:(NSDictionary * _Nullable)adExtra 额外信息字典 开屏广告加载成功,并可附带C2S价格信息 - (void)atOnInterstitialAdLoadedExtra:(NSDictionary * _Nullable)adExtra 额外信息字典 插屏广告加载成功,并可附带C2S价格信息 - (void)atOnBannerAdLoadedWithView:(UIView * _Nullable)bannerView adExtra:(NSDictionary * _Nullable)adExtra 1.第三方 SDK 的横幅广告对象
2.额外信息字典横幅广告加载成功,并可附带C2S价格信息 - (void)atOnNativeAdLoadedArray:(NSArray <ATCustomNetworkNativeAd >)nativeObjectArray adExtra:(NSDictionary *_Nullable)adExtra 1.已组装好的原生广告对象数组
2.额外信息字典原生广告加载成功,并可附带C2S价格信息 - (void)atOnRewardedAdLoadedExtra:(NSDictionary * _Nullable)adExtra; 额外信息字典 激励视频广告加载成功,并可附带C2S价格信息 以开屏广告为例:
objc 复制代码#import <AnyThinkSDK/AnyThinkSDK.h> @implementation DemoCustomSplashDelegate /** * 第三方 SDK 的开屏广告就绪回调 * 回传时机说明:本例中,第三方广告 SDK 的回调既可以拿到价格,同时也可以确认广告就绪 */ - (void)msSplashAdReadySuccess:(MSSplashAd *)splashAd { //通过第三方广告 SDK 获取到了价格 NSInteger ecpm = [splashAd ecpm]; NSMutableDictionary *infoDic = [NSMutableDictionary dictionary]; NSString *priceStr = [NSString stringWithFormat:@"%ld",ecpm]; NSString *logOriginalString = [NSString stringWithFormat:@"C2S Original priceStr :%@",priceStr]; NSLog(@"获取到广告价格:%@",logOriginalString); if ([priceStr doubleValue] < 0) { priceStr = @"0"; } [infoDic AT_setDictValue:priceStr key:ATAdSendC2SBidPriceKey]; [infoDic AT_setDictValue:@(ATBiddingCurrencyTypeCNYCents) key:ATAdSendC2SCurrencyTypeKey]; NSString *logString = [NSString stringWithFormat:@"[Network:C2S]::%@",infoDic]; NSLog(@"获取到C2S信息:%@",logString); //传递价格给聚合 SDK [self.adStatusBridge atOnSplashAdLoadedExtra:extraDic]; } ......
温馨提示
- 如果第三方广告 SDK 的广告加载成功回调在其返回价格回调之前,您可以在返回价格回调中通知我们
- 如果第三方广告 SDK 的广告加载成功回调在其返回价格之后,您可以先使用实例变量保存价格,等待广告加载成功回调后再通知我们
您需要在各广告类型的自定义Adapter类中实现以下方法:
方法名 参数 说明 - (void)didReceiveBidResult:(ATBidWinLossResult *)result ATBidWinLossResult *result 聚合 SDK 发送的竞价结果回调 以开屏广告为例:
objc 复制代码@implementation DemoCustomSplashAdapter #pragma mark - 聚合 SDK 发送的竞价结果回调 - (void)didReceiveBidResult:(ATBidWinLossResult *)result { if (result.bidResultType == ATBidWinLossResultTypeWin) { //本次竞胜了,这里调用第三方 SDK 代码告诉他们,所需的信息从result中取出 }else { //本次竞败了,这里调用第三方 SDK 代码告诉他们,所需的信息从result中取出 } } ......