Skip to content

系統設定(開發文檔)

最後更新:2026-04-10

📖 功能說明請參考 系統設定


架構

相關檔案

ViewController / ViewModel(5 個)
檔案說明
.../SystemSet/C/BBSystemSettingsViewController.swift系統設定
.../SystemSet/VM/BBSystemSettingsViewModel.swift系統設定 ViewModel
.../SystemSet/VM/BBSystemSettingsCellViewModel.swiftCell ViewModel
.../SportMenu/V/SportSetViewController.swift體育設定
.../Service/ConfigManager.swift設定管理

基礎路徑:BBSport/Tab/我的/Mine/

View(2 個)
檔案說明
.../SystemSet/V/BBSystemSettingsCell.swift設定 Cell
.../SystemSet/V/BBSystemSegmentedControl.swift日夜切換控件

基礎路徑:BBSport/Tab/我的/Mine/

Service / 核心(5 個)
檔案說明
.../Service/IFHomeServices.swift設定同步
.../Service/IFWalletService.m錢包 OC
.../Service/WalletModuleApi.m錢包模組 API
BBSport/STUIKit/STUITools/STDayNightDefine.swift日夜模式常量
BBSport/Tools/LanguageManager/LanguageManager.swift語言管理

基礎路徑:BBSport/Tab/我的/Mine/

顏色 / 用戶模型(2 個)
檔案說明
BBSport/Tools/UtilityToolComponentOC/Classes/Helper/ColorManager/STColorManager.mOC 顏色管理
BBSport/STUIKit/STBusiness/Models/User/IFUserModel.mOC 用戶模型

注意:公告相關和賽果相關檔案屬於獨立功能模組,不屬於系統設定範疇,已移除。如需查看公告/賽果相關程式碼,請參考對應的功能文檔。

API Request(8 個)
檔案說明
BBSport/API/STAPI/Settings/STAPI+RebateStatusRequest.swift返水狀態查詢
BBSport/API/STAPI/Settings/STAPI+SetRebateStatusRequest.swift設定返水狀態
BBSport/API/STAPI/Settings/STAPI+UpdateOddsConfigRequest.swift更新賠率設定
BBSport/API/STAPI/Settings/STAPI+XJBetConfigRequest.swift信用投注設定
BBSport/API/STAPI/STAPI+VersionInfoRequest.swift版本資訊
BBSport/API/STAPI/STAPI+VersionInstallRequest.swift版本安裝
BBSport/API/STAPI/STAPI+VersionUserRecordRequest.swift版本用戶紀錄
BBSport/API/STAPI/STAPI+FriendDomainRequest.swift好友域名

API

返水設定


取得返水自動領取狀態

POST api/forehead/activity/rebate/get — urlForm — STAPI.RebateStatusRequest

無參數,靠 Header token/uid 認證。

Response:

欄位型別說明
rebateSwitchInt返水自動領取狀態(1=開啟, 0=關閉)

設定返水自動領取狀態

POST api/forehead/activity/rebate/set — urlForm — STAPI.SetRebateStatusRequest

參數型別必填說明
switchKeyint開關狀態(1=開啟, 0=關閉)

Response: 無 data,僅含 code 和 message。

注意

關閉返水自動領取時會額外彈出提醒,告知使用者需手動領取。


賠率設定


更新賠率/設定配置

POST api/forehead/system/cfg/set — urlForm — STAPI.UpdateOddsConfigRequest

用途

體育設定中所有賠率、盤口變更統一透過此 API 打包 JSON 同步。

參數型別必填說明
collectstring固定值 "UserConfig"
jsonStrstringJSON 字串,包含各平台賠率設定等配置

Response: 無 data,僅含 code 和 message。

jsonStr 格式範例

jsonStrIFHomeServices.updateOddsSetup() 打包,實際結構:

json
{
  "OBAccept": "1",
  "STAccept": "0",
  "UPAccept": "1",
  "game": "164",
  "handicap": "2",
  "push_event": "1,2,3",
  "push_notice": "1",
  "vibrate": "1",
  "pattern": "1",
  "bet_pattern": "0"
}

所有值為字串型別。pattern:0=夜間、1=日間。gameGameType rawValue。


版本檢查


版本檢查

GET api/forehead/system/version — urlForm — STAPI.VersionInfoRequest

參數型別必填說明
bundleIDstringApp Bundle Identifier
usernamestring用戶名(未登入為空字串)

Response:

欄位型別說明
contentString更新內容說明
nameString標題
versionString最新版本號
urlStringplist 檔案 URL
h5urlStringH5 頁面 URL
statusInt0=強制, 1=不強制
updateTypeInt0=不強制, 1=強制更新, 2=證書掉線跳網頁
certificateTypeInt0=企業, 1=超級簽

賠率接受策略

屬性平台值域jsonStr Key
oddsSTIDBB 體育0=接受更好, 1=接受任何, 2=不接受STAccept
oddsUPIDUP 體育0=接受更好, 1=接受任何, 2=不接受UPAccept
oddsOBIDDB 體育1=接受更好, 2=接受任何, 3=不接受OBAccept

DB 賠率值域差異(1/2/3 而非 0/1/2)

DB(OB)體育的賠率策略起始值為 1 而非 0,這是因為 DB 後端 API 定義的枚舉從 1 開始(1=接受更好2=接受任何3=不接受)。BB/UP 體育則遵循前端慣例從 0 開始。程式碼中 IFUserInfoConfig.h 的註解明確標示:OB 1:自動接收更好的赔率 2:自動接受任何赔率变动 3:不自動接受赔率变动IFHomeServices.updateOddsSetup() 中預設值 oddsUPID ?? 1 對應 UP 的「接受任何」,oddsOBID ?? 0 在 DB 端需避免傳 0。

設定項本地 vs 後端對照

設定項儲存位置說明
語言切換純本地Bundle.setLanguage(lang:)UserDefaults,不同步後端(目前強制簡中)
日/夜間模式本地 + 後端同步本地 ThemeManager.setTheme(index:) 立即生效;同時透過 updateOddsSetuppattern 同步後端
賠率接受策略本地 + 後端同步IFUserModel 本地保存;透過 UpdateOddsConfigRequest 同步後端
盤口類型本地 + 後端同步handicapIDupdateOddsSetup
返水自動領取純後端RebateStatusRequest / SetRebateStatusRequest,無本地快取
推送/震動開關本地 + 後端同步push_notice / vibrateupdateOddsSetup
版本檢查純後端VersionInfoRequest,本地僅比對版本號

登出

確認框(取消在左、確認在右)→ GameStatusManager.shared.logout()

完整登出流程詳見 登入與注冊

實作重點

  • 主題切換SwiftTheme 框架,ThemeManager.setTheme(index:) 切換;同步 OC 端 STColorManager;發送 STNotify.nightPatternOpen 全域刷新
  • 返水自動領取:進入頁面呼叫 RebateStatusRequest;關閉時彈窗提醒手動領取
  • 體育設定同步:統一透過 IFHomeServices.updateOddsSetup() 打包 JSON 呼叫
  • 語言切換Bundle.setLanguage(lang:) 設定;防抖機制(< 1 秒合併觸發);發送 STNotify.languageDidChange
  • 版本檢查IFCommonUtil.compareVersion() 比對版本號
  • 登出:確認框(取消在左、確認在右)→ GameStatusManager.shared.logout()

關鍵數字

  • 語言切換防抖間隔:< 1 秒合併觸發
  • 主題索引:0 = 日間,1 = 夜間