Skip to content

場館登入(開發文檔)

最後更新:2026-04-10

📖 功能說明請參考 場館登入


架構

相關檔案

Provider(4 個)
檔案說明
.../GameStatusManager.swift統一管理各平台登入狀態
.../Provider/FB/FBSportStatusProvider.swiftFB 極速體育
.../Provider/UP/UPSportStatusProvider.swiftUP/BB 體育
.../Provider/DB/DBSportStatusProvider.swiftDB 體育

基礎路徑: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

參數型別必填說明
gameIdInt場館 channelId(FB/UP/DB 各不同)
typeString固定值 "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

參數型別必填說明
gameIdInt場館 channelId

Response:GameJumpPreCheckRequest.Response

欄位型別說明
awardAmountInt獎金金額
transferAvailableBool是否可轉帳(false 時彈窗提示)
userHasAwardAmountBool使用者是否有獎金餘額
userHasRechargeBool使用者是否有充值記錄

預檢用途

在跳轉遊戲前檢查轉帳可用性和獎金餘額,transferAvailable=false 時彈窗提示使用者。


三場館對照表

項目FB 極速體育UP/BB 體育DB 體育
ProviderFBSportStatusProviderUPSportStatusProviderDBSportStatusProvider
登入成功通知STNotify.userLoginFBSTNotify.userLoginUPSTNotify.userLoginOB
Token 失效通知STNotify.reLoginFBSTNotify.reLoginUPSTNotify.reLoginOB
維護判斷GameMaintenanceManager.shared.fbGameMaintenanceManager.shared.upGameMaintenanceManager.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 rawValuechannelId 取得方式說明
FB 極速體育34IFCommonUtil.fbSportChannelID()動態值,由後端 GameJump 配置下發
DB 體育50IFCommonUtil.dbSportChannelID()動態值
UP/BB 體育164IFCommonUtil.upSportChannelID()動態值;BB = UP 別名
娛樂1-非體育場館
骰寶165-獨立遊戲

GameType 枚舉定義於 GameType.swiftsportChannelId 屬性呼叫 IFCommonUtil 取得動態值。gameId 傳入 GameJump API 的即為此動態 channelId。

GameJump Response 範例

FB/UP 回傳 URL 字串範例:

https://xxx.example.com/sport?token=eyJhbGciOiJIUz...&apiSrc=https://api.example.com&lang=zh

DB 回傳 JSON 字串範例:

{"token":"eyJhbGciOiJIUz...","apiDomain":"https://ob-api.example.com","imgDomain":"https://ob-img.example.com",...}
  • UP/FB:解析 URL query 中的 tokenapiSrc 欄位
  • DB:整段 URL 為 JSON,解析 tokenapiDomainimgDomain(轉為 OBDomainModel
  • 驗證規則:不含 //localhost:game_error.html,且包含 token 和對應域名欄位

PreCheck 彈窗文案

transferAvailable=false 時顯示的彈窗:

項目內容
標題温馨提示
內文尚未完成首次充值,您的体验金不能在体育之外的场馆进行投注
左按鈕先去看看(dismiss 後繼續跳轉遊戲)
右按鈕充值(跳轉充值頁)

程式碼位於 PushGameService.showPreCheckAlert()