Skip to content

Prebid.js を使わない場合(VAST 直渡し)

プレイヤーは入札の取得方法に依存しません。再生に必要なのは VAST タグ URLvastUrl)か インライン VAST XMLvastXml)だけです。Prebid.js はあくまで VAST を取得する手段の 1 つで、必須ではありません。

手元に VAST があれば、それがどこから来たか(広告サーバーの直タグ、自社バックエンド、別のヘッダービディングラッパー、直接取引のクリエイティブ)を問わず、そのままプレイヤーに渡せます。

プレイヤーが必要とするのは VAST だけ

プレイヤーは RTB も入札ロジックも持ちません。VAST を入手する部分はあなたの構成に任され、プレイヤーは「再生・視聴判定・リワード付与」だけを担います。

最小の入札(bid)

プレイヤーに渡す bid は次の形です。vastUrlvastXml のどちらか一方を指定します。

ts
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 に渡すだけです。

html
<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>
ts
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 にそのまま渡します。

ts
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 を渡すだけです。

ts
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 を渡してください。

ts
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 リファレンス を参照してください。

Michao!! player documentation