程序化广告行业(65/89):AdX/SSP系统深度剖析与实战要点
程序化广告行业(65/89):AdX/SSP系统深度剖析与实战要点
大家好!一直以来,我都对程序化广告领域充满热情,这个领域发展迅速且不断涌现新的技术和模式。之前我们探讨了程序化广告的一些基础内容,今天咱们继续深入学习AdX/SSP系统中广告位代码获取的更多形式、PDB订单设置、广告排期表以及DSP接入设置等关键知识,希望能和大家一起在这个领域不断进步,收获更多有价值的信息。
一、广告位代码获取的多样形式
在AdX/SSP系统中,广告位代码获取除了之前提到的Web页面广告位的JS和iframe形式,还有视频播放器广告位和App应用广告位这两种特殊类型。
视频播放器广告位用于PC或Mobile媒体内的视频播放器内,一般采用vast形式。它分为http协议和https协议,例如http://b-rk.biddingx.com/rk/bid?id=196&mrt=2
就是一种vast代码形式。这种代码形式确保广告能在视频播放过程中精准展示,比如常见的视频前贴片广告、暂停广告等,都是通过这种方式实现的。在实际开发中,我们可以使用Python的requests
库来模拟获取视频播放器广告位代码:
import requests
def get_video_ad_slot_code():
url = "http://example.com/video_ad_slot_code"
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return "获取视频广告位代码失败"
print(get_video_ad_slot_code())
App应用广告位主要用于App应用内。接入方式是使用SDK代码包,并且根据不同的移动操作系统,分为iOS和Android两种SDK。由于市场上很多游戏App会使用Unity3D或Cocos2d游戏引擎,AdX/SSP若要接入这些游戏App,就需要相应的Unity3D、Cocos2d的SDK。开发者接入时,集成这些SDK后选择导出游戏到iOS或Android平台就行。下面用Java代码模拟在Android平台集成SDK的部分逻辑:
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 模拟初始化广告SDK
boolean isSdkInitialized = initAdSdk();
if (isSdkInitialized) {
// SDK初始化成功,进行广告位加载等后续操作
loadAdSlot();
} else {
// SDK初始化失败处理
handleSdkInitializationError();
}
}
private boolean initAdSdk() {
// 实际初始化SDK的逻辑,这里简化返回true表示成功
return true;
}
private void loadAdSlot() {
// 加载广告位的逻辑
System.out.println("广告位加载成功");
}
private void handleSdkInitializationError() {
// 处理SDK初始化失败的逻辑
System.out.println("广告SDK初始化失败");
}
}
除了上述代码形式,还有API形式。由AdX/SSP平台提供API对接文档,媒体按照规范开发后双方联调;或者媒体提供API对接文档,AdX/SSP按规范开发。对接完成后,媒体掌握流量控制权,决定发送多少流量、何时发送以及投放什么素材等。假设我们使用Node.js来模拟媒体与AdX/SSP平台通过API对接发送流量的过程:
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/sendTraffic' && req.method === 'POST') {
// 模拟发送流量的逻辑
console.log('媒体向AdX/SSP平台发送流量');
res.statusCode = 200;
res.end('流量发送成功');
} else {
res.statusCode = 404;
res.end('请求未找到');
}
});
const port = 3000;
server.listen(port, () => {
console.log(`服务器运行在端口 ${port}`);
});
二、PDB订单设置要点解读
PDB订单设置包含多个重要参数。订单名称方便识别和管理不同的订单。投放平台选择决定了广告将在哪个平台上展示。价格根据预设条件、需求量等因素确定,计费方式常见的有CPM(每千次展示成本) 。需求量明确了总计和每日的展示次数需求。
退量比例在投放平台需要退量采购时设置,它影响着广告投放的成本和效果。订单有效期规定了广告投放的时间范围。选择合适的广告位至关重要,不同的广告位有不同的展示效果和受众群体。预设条件可以按时段、地区、频次、客户端、人群等维度进行预过滤,比如只选择特定时间段、特定地区的流量进行投放,这样可以让广告更精准地触达目标用户。预设条件设置得越精细,广告的精准度越高,但价格相对也会越高。
用Python类来模拟PDB订单设置:
class PDBOrder:
def __init__(self, order_name,投放平台, 计费单价, 投放需求总计, 投放需求每日, 退量比例, 有效期, 广告位, 预设条件):
self.order_name = order_name
self.投放平台 = 投放平台
self.计费单价 = 计费单价
self.投放需求总计 = 投放需求总计
self.投放需求每日 = 投放需求每日
self.退量比例 = 退量比例
self.有效期 = 有效期
self.广告位 = 广告位
self.预设条件 = 预设条件
# 实例化一个PDB订单对象
order = PDBOrder(
order_name="example_order",
投放平台="舜飞|BiddingX",
计费单价=5.0,
投放需求总计=1000,
投放需求每日=100,
退量比例=0.1,
有效期="2023-01-01至2023-01-31",
广告位="banner_ad_slot",
预设条件={"时段": "08:00-22:00", "地区": "北京"}
)
print(f"订单名称: {order.order_name}")
print(f"投放平台: {order.投放平台}")
print(f"计费单价: {order.计费单价} 元/CPM")
print(f"投放需求总计: {order.投放需求总计} 千次展示")
print(f"投放需求每日: {order.投放需求每日} 千次展示")
print(f"退量比例: {order.退量比例}")
print(f"有效期: {order.有效期}")
print(f"广告位: {order.广告位}")
print(f"预设条件: {order.预设条件}")
三、广告排期表的重要作用
除了PDB和PD订单,大部分媒体有传统直销团队进行流量售卖。为了避免售卖过量导致无法提供足够流量给需求方,广告排期表就发挥了重要作用。它能帮助销售团队清晰了解每个广告位当前的售卖情况,通过不同的颜色标识已投放、投放中、已提期等状态,直观展示每个广告位在不同时间的流量使用情况。例如,从提供的广告排期表中可以看到不同广告位在2017 - 7月各时段的售卖比例,这样销售人员就能合理安排流量售卖计划,提高流量利用效率。
假设我们用JavaScript来生成一个简单的广告排期表数据结构:
const adSlotSchedule = {
"adSlot1": {
"2023-01-01": "已投放",
"2023-01-02": "投放中",
"2023-01-03": "已提期"
},
"adSlot2": {
"2023-01-01": "未售卖",
"2023-01-02": "未售卖",
"2023-01-03": "投放中"
}
};
function getAdSlotStatus(adSlot, date) {
return adSlotSchedule[adSlot][date] || "未知状态";
}
console.log(getAdSlotStatus("adSlot1", "2023-01-01"));
console.log(getAdSlotStatus("adSlot2", "2023-01-03"));
四、DSP接入设置关键要素
(一)API验证信息
DSP接入AdX/SSP系统时,API验证信息是保障系统安全和稳定运行的关键。DSP需要提供DSP ID及对应的Token进行接入资格验证。同时,可以配置IP范围,只有在该范围内的IP才能调用AdX/SSP的API接口。这不仅能防止DSP ID和Token信息泄露后被他人盗用,还能避免AdX/SSP的API资源被恶意请求导致浪费。
(二)价格密钥设置
DSP和AdX/SSP约定好价格密钥,这是为了保护DSP的价格信息不被泄露。在广告投放过程中,价格信息涉及商业利益,通过设置价格密钥,可以确保只有双方认可的交互才能获取和传递价格信息,提高交易的安全性和保密性。
用Java代码模拟DSP接入设置中的API验证和价格密钥设置:
public class DSPAccessSettings {
private String dspId;
private String token;
private String ipRange;
private String priceKey;
public DSPAccessSettings(String dspId, String token, String ipRange, String priceKey) {
this.dspId = dspId;
this.token = token;
this.ipRange = ipRange;
this.priceKey = priceKey;
}
// 省略getter和setter方法
}
public class Main {
public static void main(String[] args) {
DSPAccessSettings settings = new DSPAccessSettings(
"dsp123",
"token123456",
"192.168.1.0/24",
"price_key_abc"
);
System.out.println("DSP ID: " + settings.getDspId());
System.out.println("Token: " + settings.getToken());
System.out.println("IP范围: " + settings.getIpRange());
System.out.println("价格密钥: " + settings.getPriceKey());
}
}
今天为大家详细解读了AdX/SSP系统中的多个关键知识点,这些内容在程序化广告投放中起着至关重要的作用。希望大家通过这篇文章能对程序化广告有更深入的理解。
写作不易,如果这篇文章帮助你更好地了解了程序化广告行业,希望你能点赞、评论支持一下,也欢迎关注我的博客,后续我会持续分享更多相关知识,咱们一起在这个领域共同成长!