IFrame和本機容器:何時選擇
文章全文
1)術語和上下文
iFrame是一個嵌入第三方內容(遊戲、結帳、小部件)的HTML容器。主機和內容在邏輯上被原點策略(same-origin策略)隔離。
本機容器是在WebView(WKWebView,Android WebView)中運行Web內容或被本機SDK(渲染,網絡,支付,遙測)取代的應用程序/模塊。
在哪裏見面:遊戲的開始和演示,大廳,售票處/登機,實時視頻,頭獎小部件,合作夥伴著陸。
2)簡短的答案: 選擇什麼
您需要快速啟動、大量第三方內容、最低限度的開發→ iFrame。
需要離線/低延遲/重型圖形/深度集成設備→本地容器(WebView+bridge或SDK)。
市場/staranalitics/嚴格的 gaidline(Apple/Google),系統支付,硬RG鉤→本機容器。
媒體網站,SEO-landings,帶有可播放插頁→ iFrame的評論。
3)選擇矩陣(簡化)
4) iFrame: 什麼時候是完美的
腳本:快速輸出演示遊戲、合作夥伴插入、頭獎/評級小部件、帶可玩單元的登陸、B2B聚合器。
優點
集成速度:單個「src」+鍵/參數。
客機與主機的嚴格隔離(SOP)-減少泄漏風險。
提供商的獨立發行版(不會觸及您的資料)。
廉價地擴展數百家供應商。
缺點
與設備和本地付款的集成有限。
更難進行深度遙測(大於「橋梁」)。
3rd-party cookies/Storage (Safari/Firefox/ITP)的問題。
移動上復雜的後視鏡/手勢/鍵盤。
最佳做法
「sandbox」屬性(限制「allow-forms」,「allow-scripts」,在需要時逐點打開「allow-popups-to-escape-sandbox」)。
「Content-Security-Policy」包含白色的提供商列表;「X-Frame-Options」用於敏感頁面。
通信是帶有驗證事件的「postMessage」。起源和消息模式。
Resize: 「ResizeObserver」在活動內+「postMessage(」height「)」→主機更改'iframe。style.height`.
存儲-Storage Access API/fallbacks;State-通過URL參數或父狀態。
RG/AML:停止信號(自我隔離,限制)-通過事件,iframe必須完成會話。
5)本土容器: 當他們贏了
腳本:帶有實時遊戲和收銀機的移動應用程序,復雜的Onbording/KUS,低延遲實時流,離線模式,Stor Payment,AR/VR-fici。
優點
性能/低潛伏期,鐵訪問(相機,生物識別技術)。
單個UX和RG/AML深度集成(系統變量,本地大炮)。
可靠的應用內支付和訂閱(StoreKit/Billing)。
精確的遙測和故障控制(crashlytics,traces)。
缺點
擁有價格:多平臺開發,通過堆棧發布。
蘋果/谷歌批準;對azart/付款的限制。
更多安全和隱私責任。
模式是
WebView+JS bridge(雙向通道):遊戲/支付/限制事件是本機發生的。
混合:關鍵屏幕本機(結帳,KYC, RG),內容-WebView/iFrame。
提供商的SDK:遊戲/流由庫嵌入;主機給出令牌,限制,錢包。
6)通信: iFrame ⇄主機和WebView ⇄
Web(iFrame):- `window.postMessage({type, payload}, targetOrigin)`
- 事件圖:'遊戲。session.start/stop`, `bet.place/settle`, `rg.limit.hit`, `jackpot.contribution`, `error`.
- 驗證:檢查「起源」,輸入轉化(「v1」,「v2」)。
- iOS: `WKScriptMessageHandler`;Android:「addJavascriptInterface」(帶有@JavascriptInterface,沒有額外展示)。
- HMAC對關鍵命令的簽名格式相同(「類型」,「付費」,「trace_id」)。
7)安全和合規性
用於Assets的CSP,sandbox,SRI;不必停用「allow-top-navigation-by-user-activation」。
主機和內容之間的零信任:最小值,微調危險API。
PII/居住權:按地區劃分的存儲和徽標;禁止跨區域查詢。
RG/AML:速率同步停止信號;WORM Crit操作日誌。
Cookie/ITP: 使用'SameSite=None;Secure`;для 3rd-party — Storage Access API или server-side session.
8)性能和UX
iFrame:懶惰連接(「loading=lazy」)、網絡資源優先級、「preconnect」到提供商域。
WebView:關閉不必要的JS,緩存代理,啟用硬件加速,監視GC/內存刷新。
Full屏幕和方向:通過事件方案(何時以及誰啟動過渡)嚴格規定。
錯誤處理:統一代碼(「NETWORK_TIMEOUT」,「PAYMENT_BLOCKED」,「RG_BLOCK」)和UX prompta。
9)分析和A/B
事件總線: '會議。started/ended`, `bet.placed/settled`, `deposit.succeeded`, `rg.limit.hit`, `error`.
標識符:'tenant_id/brand_id/region/player_pseudo'、'trace_id'。
在iFrame中,通過parent-proxy(主機中的標簽管理器)進行跟蹤,在WebView中是本機分析SDK。
A/B:主機中的fichflags;iFrame通過「postMessage(init)」學習變體。
10)支付整合
Web/iFrame:最好是主機中的收銀機,而不是iFrame內部(3rd-party鎖較少,優於UX,更簡單RG/AML)。
附錄:適用於有效腳本的StoreKit/Billing;否則-PSP編排是本機的,具有強大的遙測和偶發性。
11)案例選擇卡
您是一個聚合器/媒體,擁有數千個遊戲和最小的dev資源:- → iFrame,嚴格的「sandbox」、「postMessage」 (postMessage),主機中的收銀機/限值。
- →本機容器:大堂的WebView,本機售票處/KYC/RG,實時提供商的SDK。
- →應用程序中的完全本機SDK或引擎。
12)支票單
iFrame集成
- 「sandbox」+最小的「allow」右。
- 具有白色列表的CSP;SRI用於腳本。
- 「postMessage」(+轉化+「origin」驗證)的清晰方案。
- RG/AML停止信號得到支持,會話正確結束。
- 存儲庫:cookie ITP/3rd-party計劃。
- 遙測:bets/min, settle-lag, error-rate, FPS(如果需要)。
本機容器
- 帶有白色方法列表和付費打字的JS-bridge。
- 本機售票處/KYC/RG,貨幣路線上的idempotency。
- Pushi, deep-links, lifecycle-hooki(在呼叫/背景工作時暫停遊戲)。
- Crash/trace, privacy-permishen, PII訪問審核。
- 蘋果/谷歌的azart和支付政策得到遵守。
13)反模式(紅旗)
將收銀機嵌入提供商的iFrame中(失去對RG/AML/遙測的控制)。
缺乏驗證的事件。origin` в `postMessage`.
3rd-party cookie是唯一的狀態方式。
適用於多個品牌/地區的相同密鑰/秘密。
從Web檢查器手動編輯資產負債表/限制(無服務器檢查)。
零降解:iFrame的下降打破了整個頁面,而沒有重擊。
14)結論
iFrame是您通往內容生態系統的「快速網關」:低成本、強硬隔離、快速發布。本機容器-關於深度:性能、設備、流量支付、嚴格的RG/AML和頂級UX。贏得的不是一種方法,而是一種組合:用於目錄和演示的iFrame/Web,用於金錢,現場體驗和監管嚴謹。正確的責任區劃分、明確的事件合同和強大的安全性將使規模在速度、風險和質量方面沒有妥協。
