Prebid.js を使わない場合(VAST 直渡し)
プレイヤーは入札の取得方法に依存しません。再生に必要なのは VAST タグ URL(vastUrl)か インライン VAST XML(vastXml)だけです。Prebid.js はあくまで VAST を取得する手段の 1 つで、必須ではありません。
手元に VAST があれば、それがどこから来たか(広告サーバーの直タグ、自社バックエンド、別のヘッダービディングラッパー、直接取引のクリエイティブ)を問わず、そのままプレイヤーに渡せます。
プレイヤーが必要とするのは VAST だけ
プレイヤーは RTB も入札ロジックも持ちません。VAST を入手する部分はあなたの構成に任され、プレイヤーは「再生・視聴判定・リワード付与」だけを担います。
最小の入札(bid)
プレイヤーに渡す bid は次の形です。vastUrl か vastXml のどちらか一方を指定します。
const bid = {
mediaType: "video",
adUnitCode: "reward-slot", // 任意の識別子(計測ログ等に使われます)
vastUrl: "https://adserver.example.com/vast?...", // VAST タグ URL
// または: vastXml: "<VAST>…</VAST>" // インライン VAST XML
width: 640,
height: 360,
};width/heightは広告の想定サイズです。プレイヤーは再生中、実際の広告のアスペクト比に追従します。adUnitCodeは任意の文字列で構いません。RTB を叩く識別子としては使われません。
リワード:VAST タグ URL を渡す
広告サーバー(任意)が返す VAST タグ URL を vastUrl に渡すだけです。
<div id="reward-slot"></div>
<script src="https://cdn.michao-ssp.com/player/v1/reward.js"></script>
<script>
window.michao.createRewardPlayer({
target: "reward-slot",
bid: {
mediaType: "video",
adUnitCode: "reward-slot",
vastUrl: "https://adserver.example.com/vast?...",
width: 640,
height: 360,
},
reward: "コイン50枚",
callbacks: { onReward: () => grantReward() },
});
</script>import { createRewardPlayer } from "https://cdn.michao-ssp.com/player/v1/reward.mjs";
const handle = createRewardPlayer({
target: "reward-slot",
bid: {
mediaType: "video",
adUnitCode: "reward-slot",
vastUrl: "https://adserver.example.com/vast?...",
width: 640,
height: 360,
},
reward: "コイン50枚",
callbacks: { onReward: () => grantReward() },
});
const result = await handle.result; // "rewarded" | "dismissed" | "failed"リワード:インライン VAST XML を渡す
自社バックエンドやサーバーサイド入札などで VAST XML を直接保持している場合は、vastXml にそのまま渡します。
const vastXml = await fetch("/api/ad").then((r) => r.text()); // <VAST>…</VAST>
createRewardPlayer({
target: "reward-slot",
bid: {
mediaType: "video",
adUnitCode: "reward-slot",
vastXml,
width: 640,
height: 360,
},
reward: "コイン50枚",
callbacks: { onReward: () => grantReward() },
});アウトストリーム
アウトストリームも同じく、VAST タグ URL かインライン XML を渡すだけです。
import { createOutstreamPlayer } from "https://cdn.michao-ssp.com/player/v1/outstream.mjs";
const handle = createOutstreamPlayer({
target: "feed-slot",
bid: {
mediaType: "video",
adUnitCode: "feed-slot",
vastUrl: "https://adserver.example.com/vast?...",
width: 640,
height: 360,
},
onEnd: "collapse",
});
await handle.done; // "completed" | "failed" | "dismissed"マクロ・キャッシュバスティング
VAST タグ URL にキャッシュバスター([CACHEBUSTING] 等)やページ情報のマクロが含まれる場合、マクロの展開は呼び出し側の責務です。プレイヤーは vastUrl をそのまま読み込みます。展開済みの URL を渡してください。
const vastUrl = template
.replace("[CACHEBUSTING]", String(Math.floor(Math.random() * 1e10)))
.replace("[PAGE_URL]", encodeURIComponent(location.href));VAST 内のインプレッション/トラッキング URL に含まれるマクロ([TIMESTAMP] など)は、トラッカー送信時にプレイヤーが自動で埋めます。
注意点
- Google IMA モード(
mode: "ima")は VAST の直渡しでは動きません。 IMA は Google アドサーバー(GAM)の video 広告タグ URL を要求します。詳しくは Google IMA モード を参照してください。標準の VAST 再生(normal)であれば、ここで示したとおり生の VAST をそのまま渡せます。 - バナー(display)には VAST がありません。 display のクリエイティブはマークアップであり、描画は呼び出し側で行います。バナーのリワード を参照してください。
- VAST の取得を Prebid.js で行う場合の配線は Prebid.js 連携 にまとめています。
各オプションの詳細は API リファレンス を参照してください。