IFrameロビーとは何ですか、そしてそれを統合する方法
iFrameロビーとは
iFrameロビーは、コンテンツプロバイダ/アグリゲーターによってホストされ、オペレータページ内に「
重要なアイデア:オペレータはロビーをゼロから書くのではなく、完成したロビーを接続し、市場投入までの時間が短縮され、クロスブラウザのサポートとアップデートを受け取ります。
適切な場合
新しいプロバイダ/垂直のクイック起動。
複数の国/ブランドに統一されたショーケースが必要です。
演算子のフロントエンドコマンドが制限されています。
長所と短所
長所:速度、シングルコードベース、新製品の自動ロード、合意されたプロバイダ分析。
短所:ピクセル完璧なコントロール、ベンダーのアップタイムへの依存、微妙なトラッキング、SEO制限(iframe内のコンテンツはDOMの一部としてインデックスされません)。
基本的なアーキテクチャ
1.Front (operator): '
2.Authガスケット:オペレータのバックエンドに短命の'sessionToken' (JWT/opaque)が生成されます。
3.プロバイダロビー:トークンの検証、言語/通貨/限度、ゲームレンダラーおよびバナーの代替。
4.メッセージングバス:'ウィンドウ。postMessage'イベントのためのページとiframeの間(バランス、ゲームの開始、キャッシュレジスタを開くなど)。
5.Cashier/KYC/RG:オペレータ側(iframeの外)で呼び出されますが、ロビーコマンドからアクセスできます。
最小実装要件
認可:短命トークン(1-15分)+透明回転(サイレントリフレッシュ)。
セキュリティ:CSP、 'sandbox'、および厳密な'allow' iframe、厳密な'postMessage'フィルタリング。
安定性:イベントコントラクト(バージョン、後方コンパット)、エラーの場合の優雅なフォールバック。
UX:アダプティブグリッド、高速ナビゲーション、カードプリロード、スケルトンスクリーン。
分析:統合イベント(インプレッション、クリック、起動、エラー)、Amplitude/GA4でのマッピング。
埋め込み例(HTML+セキュリティ)
html
<iframe id=「providerLobby」
src="https ://lobby。例を示します。com/embed?brand=ACME&lang=ru¤cy=EUR&token={{SESSION_TOKEN}}"
loading=」lazy」
referrerpolicy=」strict-origin-when-cross-origin」
sandbox=」allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox」
allow="フルスクリーン;オートプレイ;暗号化されたメディア;クリップボード読み取り;clipboard-write"
style="幅:100%;高さ:100vh;ボーダー:0;表示:ブロック;">
</iframe>
説明:
- 'sandbox'-必要なフラグのみを有効にします。不必要に'allow-top-navigation'を与えないでください。
- 'allow'-意識的に機能を追加します。'実際に使用されていればpayment 'only。
- 'referrerpolicy'-リミットパラメータのリーク。
Content-Security-Policy:
default-src 'self';
frame-src https://ロビー。例を示します。com;
script-src 'self' https ://lobby。例を示します。com 'unsafe-inline';
img-src 'self' https ://lobby。例を示します。comデータ:;
connect-src 'self' https ://api。例を示します。com https://ロビー。例を示します。com;
ページのX-Frame-Optionsは、埋め込みを妨げることはありません→プロバイダがあなたと埋め込まれていますが、その逆もありません。
バックエンドにトークンを生成する(Node/Expressの例)
「jsonwebtoken」からjwtをインポートします。
import express from 「express」;
const app=express();
get (「/lobby-token」、(req、 res)=>{
const payload={
sub: req。ユーザー。id、 brand: 「ACME」、 currency: 「EUR」、 lang: 「ru」、 ts: Date。現在()
};
const token=jwt。署名(ペイロード、プロセス。ENV。LOBBY_JWT_SECRET、
アルゴリズム:「HS256,」 expiresIn: 「10m」、発行者:「acme-casino」、オーディエンス:「lobby-provider」
});
レス。json ({token});
});
ベストプラクティス:短いTTL、監査フィールド、HSM/Secrets Managerのキー、「kid」回転。
イベント契約メッセージング
ソースホワイトリストとスキーマ検証で'postMessage'を使用します。
js: js
//ホスト(演算子)
const iframe=document。getElementById (「providerLobby」)contentWindow;
const LOBBY_ORIGIN="https ://lobby。例を示します。com";
ウィンドウを開きます。addEventListener (「message」、 (e)=>{
if (e。 origin!==LOBBY_ORIGIN)を返します。
const {type、 payload}=e。 data {};
switch (type){
case 「lobby: ready」:
//iframeスタートデータを送信します。postMessage ({type: 「host: context」、ペイロード:{
バランス:125。40、 kycStatus:「検証済み」、制限:{betMax: 100}
}}、LOBBY_ORIGIN);
ブレーク;
case 「lobby: resize」:
ドキュメント。getElementById (「providerLobby」)スタイル。height=payload。高さ+「px」;
ブレーク;
case 「lobby: openCashier」:
openCashier();//break関数;
case 「lobby: launchGame」:
launchGame(ペイロード。gameId);//新しいウィンドウ/ブレイクホールを開くことができます。
case 「lobby: requestTokenRefresh」:
refreshLobbyToken()(t=>
iframe。postMessage ({type: 「host: newToken」、ペイロード:{token: t}}、 LOBBY_ORIGIN)
);
ブレーク;
}
});
標準イベント(サンプルセット):
- хосту: 'lobby: ready'、 'lobby: resize'、 'lobby: openCashier'、 'lobby: openRG'、 'lobby: launchGame'、 'lobby: track'、 'lobby: requestTokenRefresh'、'、'lobby: error:エラー。
- host→lobby: 'host: context' (balance、 locale、 limits)、 'host: newToken'、 'host: balanceUpdate'、 'host: rgState'、 'host: navigation'から。
ロビーからゲームを実行する
2つのアプローチ:1.同じiframeの内部-より速いが、より少ない制御およびより困難な追跡。
2.別のルート/ウィンドウ-単純なメトリック、オーバーレイ(RG/リミット)をハングアップすることができ、Webビューとの互換性が向上します。
最低ルート:- ロビーはlaunchGame {gameId}'を送信します。
- ホストは背面に'gameToken'を生成し、'/game/: id?トークン=……'。
- ゲームはトークンを受け取り、検証し、セッションの賭けを開始します。
UXとパフォーマンス
Α接触:デスクトップの3-5スピーカー、2-タブレット、1-モバイル;カードの高さを修正します。
スケルトンと遅延ロード(画像'loading=「lazy」'、 'fetchpriority='low')。
クイック検索とフィルタ-'で選択したタグを覚えていますか?クエリ'/'localStorage'
カードのクリック:クリックゾーン≥ 44px;キーボードのサポート(A11y)。
バナーのプレースホルダ:レイアウトが「ジャンプ」しないようにします。
iOSメディアポリシー:ビデオ/オーディオの自動再生にはユーザーのジェスチャーが必要です。デモで考えてみてください。
コンプライアンスとプレーヤー責任(RG)
制限とタイムアウト:現在のプレーヤーの制限をロビーに表示するためのサポート(読み取り専用)、ホスト側の変更フォームを呼び出します。
自己除外:イベント'ロビー:openRG'→iframeの外にRGモジュールを開きます。
(美咲)うん。-bannersと18+:ホスト側で、ロビー内ではなく、プロバイダのクリエイティブに依存しないように。
GDPR/クッキー:ロビー-第三者、クッキー同意と法的枠組み(契約上の必要性/正当な利益)について考える。
ローカライズとブランディング
言語/通貨/地域を'src'または'host: context'に渡します。
ホワイトラベル変数を許可する:色、ロゴ、フォント。
ベンダーを変更するときにデータを失わないように、オペレータ側に「favorites/recent」ブロックを保持します。
アナリティクスとメトリクス
追跡レイヤー(例):- 'lobby_impression'、 'tile_view'、 'tile_click'、 'search_use'、 'category_change'、 'launch_game'、 'error_view'。
- TTFB-Bet(ロビーに入るまでの時間)、CR_deposit→launch、 CTRカテゴリー/検索、平均表示深度。
iframeからのイベントの集計;プロバイダピクセルによる「ダブルカウント」は避けてください。
実装テストプラン
1.セキュリティ:CSPのチェック、余分な'許可'フラグと'サンドボックス'フラグ、'postMessageの検証。origin'。
2.セッション:トークンの有効期限、サイレントリフレッシュ、401/403での動作。
3.サイズ変更:モバイル/Webビュー(Android/iOS)の正しい高さ。
4.キャッシュデスク/CCM:ロビーイベントによるモーダルの開閉のシナリオ。
5.プロバイダの利用不可能:タイムアウト、スタブとリトレイの表示。
6.RG制限:ゲームがロックされて起動するのを防ぎます。
7.ロケール/通貨の切り替え:即時および再起動。
8.分析:カウンタのホストとベンダーの比較。
一般的なエラー(アンチパターン)
'origin'をチェックせずに'message'リスナーをハングします。
iframeフルアクセス(「allow-same-origin allow-top-navigation-by-user-activation」 「just in case」)を発行します。
ローテーションなしの長寿命トークン。
SEOのためのロビーの内容に頼って下さい。
プレーヤーキャッシュとプロバイダーディレクトリキャッシュをミックスします(パーソナライゼーションを中断します)。
コントロールとRGオーバーレイを追跡せずに、同じiframe内でゲームを実行します。
iFrameロビー統合チェックリスト
- 合意されたイベント契約(バージョン、タイプ、スキーマ)。
- TTL ≤ 15分と回転でロビートークンを実装。
- CSP、 'sandbox'、 'allow'、 'referrerpolicy'を設定。
- Cashier/KYC/RGを接続し「、openCashier」/「openRG」イベントをリンクします。
- プロバイダが劣化したときのフォールバックを考えた。
- ローカリゼーション、通貨、年齢バナーをチェックしました。
- アナリティクス(エンドツーエンドのユーザー/セッションID)を設定します。
- クロスブラウザおよびモバイルWebビューテストを実施。
- インシデントとベンダーとの接触点のランブックを説明しました。
iFrameロビーは、ゲームのカタログを拡大し、市場投入までの時間を短縮するための迅速かつ実用的な方法です。健全な統合の鍵は、強力なセキュリティ、明確なイベント契約、強力な承認、オペレータ側の思慮深いUX/分析です。これを行うことで、新しいベンダーとの統合をほぼ「クリック」で拡大することができます。