IFrameとネイティブコンテナ:何を選択するか
完全な記事
1)用語とコンテキスト
iFrameは、サードパーティのコンテンツ(ゲーム、キャッシュレジスタ、ウィジェット)を埋め込むHTMLコンテナです。ホストとコンテンツは、同一オリジンポリシーによって論理的に分離されます。
ネイティブコンテナ-WebView (WKWebView、 Android WebView)でWebコンテンツを起動したり、ネイティブSDK(レンダリング、ネットワーク、支払い、テレメトリー)に置き換えたりするアプリケーション/モジュール。
それが発生する場所:開始とデモゲーム、ロビー、ボックスオフィス/オンボーディング、ライブビデオ、ジャックポットウィジェット、パートナー着陸。
2)短い答え: 何を選ぶべきか
迅速な立ち上げ、サードパーティのコンテンツの多く、最低限の開発→iFrameが必要です。
デバイス→ネイティブコンテナ(WebView+ブリッジまたはSDK)とのオフライン/ローレイテンシ/ヘビーグラフィックス/ディープインテグレーションが必要です。
マーケットプレイス/ストリート分析/厳格なガイドライン(Apple/Google)、システム決済、ハードRGフック→ネイティブコンテナ。
メディアサイト、SEOランディング、再生可能なインサート付きレビュー→iFrame。
3)選択行列(簡略化)
4) iFrame: それが完全であるとき
シナリオ:デモゲームのクイック表示、アフィリエイトインサート、ジャックポット/評価ウィジェット、再生可能な着陸、B2Bアグリゲーター。
Pluses(プラス)
統合の速度:単一の'src'+keys/parameters。
堅いゲストホスト分離(SOP)-漏出のより少ない危険。
プロバイダの独立したリリース(デプロイには触れないでください)。
数百のプロバイダをスケールするのは安価です。
Minuse(マイナス)
デバイスおよびネイティブ決済との統合が制限されています。
より困難なのは、深いテレメトリー(より多くの「ブリッジ」)です。
サードパーティCookie/ストレージ (Safari/Firefox/ITP)の問題。
モバイルで複雑なフルスクリーン/ジェスチャー/キーボード。
ベストプラクティス
'sandbox'属性('allow-forms'、' allow-scripts'を制限するため、'allow-popups-to-escape-sandbox'を必要なく開くためのポイント)。
プロバイダのホワイトリストと'Content-Security-Policy';'機密ページのX-Frame-Options'。
コミュニケーション-'event'の検証と'postMessage'。origin'とメッセージスキーマ。
サイズ変更:イベント内の'ResizeObserver'+'postMessage('height')'→ホスト変更'iframe。スタイル。「高さ」。
ストレージ-ストレージアクセスAPI/follbacks;state-URLパラメータまたはparent-stateを介して。
RG/AML:停止信号(自己排除、制限)-イベントを通じて、iframeはセッションを終了する義務があります。
5)ネイティブコンテナ: 彼らが勝つとき
シナリオ:ライブゲームやキャッシュレジスタを備えたモバイルアプリケーション、複雑なオンボーディング/CUS、低遅延のリアルタイムストリーム、オフラインモード、店舗決済、AR/VR機能。
Pluses(プラス)
性能/低遅延、鉄へのアクセス(カメラ、生体認証)。
単一のUXと深いRG/AML統合(システムアラート、ネイティブプーチ)。
信頼できるアプリ内の支払いとサブスクリプション(StoreKit/Billing)。
正確なテレメトリーと故障制御(crashlytics、トレース)。
Minuse(マイナス
所有価格:マルチプラットフォーム開発、ストアを通じたリリース。
Apple/Googleの承認;興奮/支払いの制限。
より多くのセキュリティとプライバシー責任。
[パターン]
WebView+JSブリッジ(双方向チャンネル):ゲーム/支払い/制限イベントはネイティブに行われます。
ハイブリッド:重要なネイティブスクリーン(キャッシュレジスタ、KYC、 RG)、コンテンツスクリーン-WebView/iFrame。
プロバイダSDK:ゲーム/ストリームはライブラリによって埋め込まれています。ホストはトークン、リミット、ウォレットを提供します。
6)コミュニケーション: iFrame ⇄ホストとWebView ⇄ネイティブ
Web (iFrame):- 'window。postMessage ({type、 payload}、 targetOrigin)'
- イベントスキーマ:'game。セッション。start/stop'、'bet。place/settle'、'rg。限界。ヒット'、'ジャックポット。contribution'、'error'。
- 検証:'origin'をチェックし、バージョン管理('v1'、 'v2')を入力します。
- iOS: 'WKScriptMessageHandler';Android: 'addJavascriptInterface'(@JavascriptInterfaceで、不要なものを公開せずに)。
- フォーマットは同じ('type'、 'payload'、 'trace_id')、重要なコマンドのHMAC署名です。
7)安全性とコンプライアンス
資産のためのCSP、サンドボックス、SRI;必要なく「allow-top-navigation-by-user-activation」を切断します。
ホストとコンテンツ間のゼロトラスト:最小限のパミッシブ、危険なAPIの変異。
PII/レジデンシー:地域別の保管庫とログ;クロスリージョンクエリ阻害。
RG/AML:ベットの同期ストップライト;WORM creteアクションのログ。
Cookie/ITP: 'SameSite=None;を使用します。安全な';サードパーティ-Storage Access APIのサーバーサイドセッション。
8)性能およびUX
iFrame:遅延接続('loading=lazy')、ネットワークリソースの優先順位付け、プロバイダドメインへの'preconnect'。
WebView:不要なJS、キャッシュ資産をオフにし、ハードウェアアクセラレーションを有効にし、GC/メモリクリーニングを監視します。
フルスクリーンとオリエンテーション:イベントスキーム(いつ、誰がトランジションを開始するか)を通じて厳密に規定されています。
エラー処理:unified codes ('NETWORK_TIMEOUT'、 'PAYMENT_BLOCKED'、 'RG_BLOCK')とUX proppants。
9)分析とA/B
イベントバス:'session。started/ended'、'bet。配置/決済'、'デポジット。'、'rgに成功しました。限界。'、'error'を押します。
識別子:'tenant_id/brand_id/region/player_pseudo'、 'trace_id'。
iFrame-親プロキシ(ホスト内のタグマネージャ)経由のトラック、WebView-ネイティブ分析SDK。
A/B:ホスト内のフィーチャーフラグ。iFrameは'postMessage (init)'を通じてオプションを認識します。
10)支払いの統合
Web/iFrame:できればホスト上の現金で、iFrame内ではなく(3rdパーティーロックが少なく、UXが良く、RG/AMLが容易)。
ネイティブ:有効なシナリオのためのStoreKit/請求;そうでなければ、PSPオーケストレーションは強力なテレメトリーとidempotencyでネイティブです。
11)場合の選択カード
あなたは何千ものゲームと最低限の開発リソースを持つアグリゲーター/メディアです:- →iFrame、厳格な'sandbox'、 'postMessage'プロトコル、ホスト内のキャッシュデスク/制限。
- →ネイティブコンテナ:ロビー用WebView、 ネイティブキャッシュデスク/KYC/RG、ライブプロバイダSDK。
- →アプリケーション内の完全ネイティブSDKまたはエンジン。
12)チェックリスト
iFrame統合
- 'sandbox'+最小'allow'の権利。
- ホワイトリスト付きCSP;スクリプトのSRI。
- 'postMessage'スキーム(+バージョン管理+'origin'検証)をクリアします。
- RG/AMLブレーキライトがサポートされ、セッションが正しく終了します。
- ストレージ:ITP/3rd-partyクッキーの計画。
- テレメトリー:ベット/分、settle-lag、 error-rate、 FPS(必要に応じて)。
ネイティブコンテナ
- メソッドのホワイトリストとペイロードタイピングを持つJSブリッジ。
- ネイティブキャッシュデスク/KYC/RG、お金の方法でのidempotency。
- プッシュ、ディープリンク、ライフサイクルフック(/バックグラウンドワークを呼び出すときにゲームを一時停止)。
- クラッシュ/トレース、プライバシー、PIIアクセス監査。
- Apple/Googleの興奮と支払いポリシーに従います。
13)アンチパターン(赤い旗)
プロバイダのiFrame内にキャッシュレジスタを埋め込む(RG/AML/テレメトリーに対する制御の損失)。
バリデーションはありません。origin'-'postMessage'。
ステートする唯一の方法としてサードパーティCookie。
複数のブランド/リージョンで同じキー/シークレット。
Webインスペクターからの残高/限度の手動調整(サーバーチェックなし)。
ゼロ劣化:iFrameドロップは、優雅なフォールバックなしでページ全体を壊します。
14)出金
iFrameは、低コスト、タイトな分離、高速リリースなど、コンテンツエコシステムへの「高速ゲートウェイ」です。ネイティブコンテナ-詳細:パフォーマンス、デバイス、店舗決済、厳格なRG/AML、トップエンドのUX。1つのアプローチではなく、カタログやデモ用のiFrame/Web、お金のためのネイティブ、ライブエクスペリエンス、規制の厳格さの組み合わせ。責任の適切な分離、明確なイベント契約、強力なセキュリティは、スピード、リスク、品質に妥協することなく規模を与えます。
