Appearance
場館登入(開發文檔)
最後更新:2026-04-10
📖 功能說明請參考 場館登入
架構
相關檔案
Provider(4 個)
| 檔案 | 說明 |
|---|---|
.../GameStatusManager.swift | 統一管理各平台登入狀態 |
.../Provider/FB/FBSportStatusProvider.swift | FB 極速體育 |
.../Provider/UP/UPSportStatusProvider.swift | UP/BB 體育 |
.../Provider/DB/DBSportStatusProvider.swift | DB 體育 |
基礎路徑:
BBSport/Tab/体育/Sport/Common/GameStatusManager/
協議 / 型別(2 個)
| 檔案 | 說明 |
|---|---|
.../Provider/SportStatusProvider.swift | 場館登入協議 |
.../GameType.swift | 場館類型枚舉 |
基礎路徑:
BBSport/Tab/体育/Sport/Common/GameStatusManager/
API / 其他(2 個)
| 檔案 | 說明 |
|---|---|
BBSport/API/STAPI/STAPI+ProxyJumpRequest.swift | 代理跳轉 API |
BBSport/Tools/MaintenanceManager/GameMaintenanceManager.swift | 維護管理 |
API
場館登入
場館登入(GameJump)
POST api/forehead/gamebet/game/jump — urlForm — STAPI.GameJumpRequest
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| gameId | Int | ✅ | 場館 channelId(FB/UP/DB 各不同) |
| type | String | ✅ | 固定值 "0",程式碼自動附加 |
Response: String — 帶 token + apiSrc(或 apiDomain)的 URL 字串,由各 Provider 解析取得 token 和域名。
URL 驗證規則
URL 不能包含 //localhost: 或 game_error.html,且必須包含 token 和對應域名欄位。
場館跳轉預檢
POST api/forehead/gamebet/game/jump/preCheck — urlForm — STAPI.GameJumpPreCheckRequest
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| gameId | Int | ✅ | 場館 channelId |
Response:(GameJumpPreCheckRequest.Response)
| 欄位 | 型別 | 說明 |
|---|---|---|
| awardAmount | Int | 獎金金額 |
| transferAvailable | Bool | 是否可轉帳(false 時彈窗提示) |
| userHasAwardAmount | Bool | 使用者是否有獎金餘額 |
| userHasRecharge | Bool | 使用者是否有充值記錄 |
預檢用途
在跳轉遊戲前檢查轉帳可用性和獎金餘額,transferAvailable=false 時彈窗提示使用者。
三場館對照表
| 項目 | FB 極速體育 | UP/BB 體育 | DB 體育 |
|---|---|---|---|
| Provider | FBSportStatusProvider | UPSportStatusProvider | DBSportStatusProvider |
| 登入成功通知 | STNotify.userLoginFB | STNotify.userLoginUP | STNotify.userLoginOB |
| Token 失效通知 | STNotify.reLoginFB | STNotify.reLoginUP | STNotify.reLoginOB |
| 維護判斷 | GameMaintenanceManager.shared.fb | GameMaintenanceManager.shared.up | GameMaintenanceManager.shared.db |
預設場館選擇邏輯
| 條件 | 返回值 |
|---|---|
| 上次在娛樂 | .bbAmuse |
| 所有體育都維護 | .bbAmuse |
| FB 維護 + 上次是 FB | 優先 UP,UP 也維護則 DB |
| DB 維護 + 上次是 DB | 優先 FB,FB 也維護則 UP |
| UP 維護 + 上次是 UP | 優先 FB,FB 也維護則 DB |
| 其他 | 上次選擇的場館 |
GameJump 配置
登入成功時,logonDataProcessing 呼叫 IFMainSwitch.updateGameJumpConfig,將後端下發的各遊戲 jump path 配置快取至 IFMainSwitch.gameJumpConfigs。
實作重點
- 三場館共用同一 API:差異僅在 channelId
- 場館登入是自動的:本平台登入成功 → 自動啟動場館登入,使用者無需操作
- 只登入當前場館:切換場館時才觸發其他場館登入
- 維護優先於登入:維護中直接 return,不嘗試登入
- BB = UP 別名:
GameType.bbSport = GameType.upSport,場館實際為 FB/UP/DB 三個
關鍵數字
- 重連上限:5 次(Token 失效後超過 5 次直接登出整個 App)
- channelId:動態值,透過
IFCommonUtil.fbSportChannelID()等取得
channelId / gameId 對照表
| 場館 | GameType rawValue | channelId 取得方式 | 說明 |
|---|---|---|---|
| FB 極速體育 | 34 | IFCommonUtil.fbSportChannelID() | 動態值,由後端 GameJump 配置下發 |
| DB 體育 | 50 | IFCommonUtil.dbSportChannelID() | 動態值 |
| UP/BB 體育 | 164 | IFCommonUtil.upSportChannelID() | 動態值;BB = UP 別名 |
| 娛樂 | 1 | - | 非體育場館 |
| 骰寶 | 165 | - | 獨立遊戲 |
GameType枚舉定義於GameType.swift,sportChannelId屬性呼叫IFCommonUtil取得動態值。gameId傳入 GameJump API 的即為此動態 channelId。
GameJump Response 範例
FB/UP 回傳 URL 字串範例:
https://xxx.example.com/sport?token=eyJhbGciOiJIUz...&apiSrc=https://api.example.com&lang=zhDB 回傳 JSON 字串範例:
{"token":"eyJhbGciOiJIUz...","apiDomain":"https://ob-api.example.com","imgDomain":"https://ob-img.example.com",...}- UP/FB:解析 URL query 中的
token和apiSrc欄位 - DB:整段 URL 為 JSON,解析
token、apiDomain、imgDomain(轉為OBDomainModel) - 驗證規則:不含
//localhost:或game_error.html,且包含token和對應域名欄位
PreCheck 彈窗文案
transferAvailable=false 時顯示的彈窗:
| 項目 | 內容 |
|---|---|
| 標題 | 温馨提示 |
| 內文 | 尚未完成首次充值,您的体验金不能在体育之外的场馆进行投注 |
| 左按鈕 | 先去看看(dismiss 後繼續跳轉遊戲) |
| 右按鈕 | 充值(跳轉充值頁) |
程式碼位於
PushGameService.showPreCheckAlert()