广告过滤
在移动广告投放过程中,不同广告源、渠道、ECPM 可能因各种因素(如用户画像、设备信息、地域限制、广告质量等)影响最终的广告效果。开发者可以使用SDK的过滤功能实现对特定广告的过滤。
广告过滤的作用
提升广告匹配度:根据用户的设备信息、地域、行为等,过滤不适合的广告源,提高广告投放精准度 优化收益:过滤低 ECPM 广告源占用展示机会 屏蔽不合规广告:根据政策、广告内容审核要求,屏蔽不符合规范的广告 降低无效请求 降低无效请求:减少无效的广告请求,优化流量分发,提高广告加载速度
广告过滤的关键条件
在客户端进行广告过滤时,可以基于以下条件进行筛选:
广告源过滤
依据广告源的历史表现,如填充率、ECPM、展示点击率,优先选择高收益、高匹配度的广告源 过滤掉历史低收益、填充率低的广告源
ECPM 过滤
设定 ECPM(每千次展示收益)门槛值,低于该门槛的广告将被屏蔽 按广告源历史数据动态调整 ECPM 阈值
渠道过滤
针对不同投放渠道(如 优量汇、快手、穿山甲、快手,国内联盟广告等)进行筛选,避免无效或低收益的渠道
竞价类型过滤
针对不同的竞价类型(如 固价、服务器端竞价、客户端竞价)进行过滤,调整不同竞价模式的权重
三方广告源广告类型过滤
针对多广告类型优选和原生转场景,如果想要过滤混出的广告,可以通过设置过滤三方广告源广告类型实现。 注意该过滤维度主要用于混出场景,除混出场景外请谨慎使用。
广告过滤代码样例
注意:过滤代码调用时机 Load广告前、Load广告之后、show之前都可以进行过滤代码执行,只要广告对象还没show 都可以进行过滤
1. Android平台代码样例 (需版本号>=V4.0.0)
| 瀑布流过滤常量字段 | 说明 |
|---|---|
| WMWaterfallFilter.KEY_CHANNEL_ID | 渠道ID (枚举见下面介绍) |
| WMWaterfallFilter.KEY_ADN_PLACEMENT_ID | 广告源ID(代码位ID) |
| WMWaterfallFilter.KEY_BIDDING_TYPE | 竞价类型 WMWaterfallFilter.NORMAL 普通广告源 WMWaterfallFilter.S2S 服务端竞价广告源 WMWaterfallFilter.C2S 客户端竞价广告源 |
| WMWaterfallFilter.KEY_E_CPM | 渠道ecpm 价格 |
| WMWaterfallFilter.KEY_ADN_PLACEMENT_SUB_TYPE | 渠道子广告类型 1 激励 2 开屏 4 插屏 5 原生 7 横幅 |
| WMWaterfallFilter.KEY_ADN_PLACEMENT_RENDER_TYPE | 渠道渲染类型 0 对应广告类型模版渲染 1 原生自渲染 |
1.1 过滤关键词(需版本号>=V4.0.0)
| 关键词 | 说明 |
|---|---|
| equalTo | 等于的关系 |
| or | 或的关系:开启一个新的过滤表达式了 |
| and | 与的关系:不开启新的过滤表达式:可写可不写 |
| in | 渠道的广告位集合 |
| addFilter | 添加一个过滤器 |
| greaterThanEqual | 大于等于,只针对价格维度进行过滤 |
| lessThanEqual | 小于等于,只针对价格维度进行过滤 |
| greaterThan | 大于,只针对价格维度进行过滤 |
| lessThan | 小于,只针对价格维度进行过滤 |
java
/**
* 下面构造了过滤表达式例子的含义为:
*
* 1、针对聚合广告位id:88888888 过滤gdt渠道下的广告位id:123
* 2、针对聚合广告位id:88888888 过滤csj渠道下的广告位id:456
* 3、针对聚合广告位id:88888888 过滤ks渠道下的广告位id集合:123、456、789
* 4、针对聚合广告位id:88888888 过滤bd整个渠道
* 5、针对聚合广告位id:88888888 过滤该瀑布流下的123、345、789等三方渠道的广告位id,与渠道无关
* 6、针对聚合广告位id:88888888 过滤该瀑布流下的ks、csj、gdt等三方渠道
* 7、针对聚合广告位id:88888888 过滤该瀑布流下的客户端bidding、服务端bidding、普通广告源(相当于过滤整个瀑布流)
* 8、针对聚合广告位id:88888888 过滤该瀑布流下的客户端bidding的三方广告源
* 9、针对聚合广告位id:88888888 过滤该瀑布流下的服务端bidding的三方广告源
* 10、针对聚合广告位id:88888888 过滤该瀑布流下的非bidding的普通三方广告源
* 11、针对聚合广告位id:88888888 过滤该瀑布流下价格在50-100之间的三方广告源
* 12、针对聚合广告位id:88888888 过滤该瀑布流下价格小于等于50的三方广告源
* 13、针对聚合广告位id:88888888 过滤该瀑布流下价格大于等于100的三方广告源
* 14、针对聚合广告位id:88888888 过滤该瀑布流下价格等于50的三方广告源
*/
WindMillAd.sharedAds().addFilter(new WMWaterfallFilter("88888888")//针对这个聚合广告位进行的过滤
.equalTo(WMWaterfallFilter.KEY_CHANNEL_ID, "16")//gdt渠道id
.equalTo(WMWaterfallFilter.KEY_ADN_PLACEMENT_ID, "123")//渠道的广告位id
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMWaterfallFilter.KEY_CHANNEL_ID, "13")//csj渠道id
.and()//与的关系:不开启新的过滤表达式:可写可不写
.equalTo(WMWaterfallFilter.KEY_ADN_PLACEMENT_ID, "456")//渠道的广告位id
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMWaterfallFilter.KEY_CHANNEL_ID, "19")//快手渠道id
.in(WMWaterfallFilter.KEY_ADN_PLACEMENT_ID, Arrays.asList("123", "456", "789"))//渠道的广告位集合
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMWaterfallFilter.KEY_CHANNEL_ID, "21")//百度渠道id
.or()//或的关系:开启一个新的过滤表达式了
.in(WMWaterfallFilter.KEY_ADN_PLACEMENT_ID, Arrays.asList("123", "456", "789"))
.or()//或的关系:开启一个新的过滤表达式了
.in(WMWaterfallFilter.KEY_CHANNEL_ID, Arrays.asList("19", "13", "16"))
.or()//或的关系:开启一个新的过滤表达式了
.in(WMWaterfallFilter.KEY_BIDDING_TYPE, Arrays.asList(WMWaterfallFilter.C2S, WMWaterfallFilter.S2S, WMWaterfallFilter.NORMAL))
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMWaterfallFilter.KEY_BIDDING_TYPE, WMWaterfallFilter.C2S)
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMWaterfallFilter.KEY_BIDDING_TYPE, WMWaterfallFilter.S2S)
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMWaterfallFilter.KEY_BIDDING_TYPE, WMWaterfallFilter.NORMAL)
.or()//或的关系:开启一个新的过滤表达式了
.greaterThanEqual(WMWaterfallFilter.KEY_E_CPM, "50") //大于等于50
.lessThanEqual(WMWaterfallFilter.KEY_E_CPM, "100") //且小于等于100
.or()//或的关系:开启一个新的过滤表达式了
.lessThanEqual(WMWaterfallFilter.KEY_E_CPM, "50")
.or()//或的关系:开启一个新的过滤表达式了
.greaterThanEqual(WMWaterfallFilter.KEY_E_CPM, "100")
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMWaterfallFilter.KEY_E_CPM, "50")
.equalTo(WMWaterfallFilter.KEY_ADN_PLACEMENT_SUB_TYPE, "1")//过滤渠道子广告类型 (1激励 2开屏 4插屏 5原生 7banner)
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMWaterfallFilter.KEY_ADN_PLACEMENT_RENDER_TYPE, "1")//过滤渠道子广告渲染类型( 1使用原生自渲染 0使用对应广告类型渲染)
);2. 移除指定广告位过滤器 (需版本号>=V4.2.1)
java
WindMillAd.sharedAds().removeFilterWithPlacementIds(tobidId1);//可以传多个TobidId3. 清除全部过滤器 (需版本号>=V4.0.0)
java
WindMillAd.sharedAds().removeFilters();4. 广告对象级广告源过滤器设置 (需版本号>=V4.6.10)
java
WMRewardAdRequest request = new WMRewardAdRequest(PLACEMENT_ID, USER_ID, OPTIONS);
WMRewardAd rewardAd = new WMRewardAd(activity,request);
WMAdFilter wmFilter = new WMAdFilter();//针对这个广告对象进行的过滤
wmFilter.equalTo(WMAdFilter.KEY_CHANNEL_ID, "16")//gdt渠道id
.equalTo(WMAdFilter.KEY_ADN_PLACEMENT_ID, "123")//渠道的广告位id
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMAdFilter.KEY_CHANNEL_ID, "13")//csj渠道id
.and()//与的关系:不开启新的过滤表达式:可写可不写
.equalTo(WMAdFilter.KEY_ADN_PLACEMENT_ID, "456")//渠道的广告位id
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMAdFilter.KEY_CHANNEL_ID, "19")//快手渠道id
.in(WMAdFilter.KEY_ADN_PLACEMENT_ID, Arrays.asList("123", "456", "789"))//渠道的广告位集合
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMAdFilter.KEY_CHANNEL_ID, "21")//百度渠道id
.or()//或的关系:开启一个新的过滤表达式了
.in(WMAdFilter.KEY_ADN_PLACEMENT_ID, Arrays.asList("123", "456", "789"))
.or()//或的关系:开启一个新的过滤表达式了
.in(WMAdFilter.KEY_CHANNEL_ID, Arrays.asList("19", "13", "16"))
.or()//或的关系:开启一个新的过滤表达式了
.in(WMAdFilter.KEY_BIDDING_TYPE, Arrays.asList(WMAdFilter.C2S, WMAdFilter.S2S, WMAdFilter.NORMAL))
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMAdFilter.KEY_BIDDING_TYPE, WMAdFilter.C2S)
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMAdFilter.KEY_BIDDING_TYPE, WMAdFilter.S2S)
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMAdFilter.KEY_BIDDING_TYPE, WMAdFilter.NORMAL)
.or()//或的关系:开启一个新的过滤表达式了
.greaterThanEqual(WMAdFilter.KEY_E_CPM, "50") //大于等于50
.lessThanEqual(WMAdFilter.KEY_E_CPM, "100") //且小于等于100
.or()//或的关系:开启一个新的过滤表达式了
.lessThanEqual(WMAdFilter.KEY_E_CPM, "50")
.or()//或的关系:开启一个新的过滤表达式了
.greaterThanEqual(WMAdFilter.KEY_E_CPM, "100")
.or()//或的关系:开启一个新的过滤表达式了
.equalTo(WMAdFilter.KEY_E_CPM, "50");
rewardAd.setFilter(wmFilter);4. 渠道ID映射表 (WMNetworkConfig)
| 广告网络 | 广告网络Id |
|---|---|
| MOBVISTA(Mintegral) | 1 |
| Vungle | 4 |
| Applovin | 5 |
| Unityadsq | 6 |
| ironSource | 7 |
| Sigmob | 9 |
| Admob | 11 |
| TOUTIAO | 13 |
| GDT | 16 |
| KUAISHOU | 19 |
| KLEVIN | 20 |
| BAIDU | 21 |
| GROMORE | 22 |
| ADSCOPE | 27 |
| QUMENG | 28 |
| TAPTAP | 29 |
| PANGLE | 30 |
| APPLOVIN_MAX | 31 |
| REKLAMUP | 33 |
| ADMATE (美数) | 35 |
| HONOR | 36 |
| INMOBI | 37 |
| VIVOADN | 38 |
| BILLOWLINK | 39 |
| OCTOPUS (章鱼) | 41 |
| MERCURY (倍业) | 42 |