Appearance
系統設定(開發文檔)
最後更新:2026-04-10
📖 功能說明請參考 系統設定
架構
相關檔案
ViewController / ViewModel(5 個)
| 檔案 | 說明 |
|---|---|
.../SystemSet/C/BBSystemSettingsViewController.swift | 系統設定 |
.../SystemSet/VM/BBSystemSettingsViewModel.swift | 系統設定 ViewModel |
.../SystemSet/VM/BBSystemSettingsCellViewModel.swift | Cell 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.m | OC 顏色管理 |
BBSport/STUIKit/STBusiness/Models/User/IFUserModel.m | OC 用戶模型 |
注意:公告相關和賽果相關檔案屬於獨立功能模組,不屬於系統設定範疇,已移除。如需查看公告/賽果相關程式碼,請參考對應的功能文檔。
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:
| 欄位 | 型別 | 說明 |
|---|---|---|
| rebateSwitch | Int | 返水自動領取狀態(1=開啟, 0=關閉) |
設定返水自動領取狀態
POST api/forehead/activity/rebate/set — urlForm — STAPI.SetRebateStatusRequest
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| switchKey | int | ✅ | 開關狀態(1=開啟, 0=關閉) |
Response: 無 data,僅含 code 和 message。
注意
關閉返水自動領取時會額外彈出提醒,告知使用者需手動領取。
賠率設定
更新賠率/設定配置
POST api/forehead/system/cfg/set — urlForm — STAPI.UpdateOddsConfigRequest
用途
體育設定中所有賠率、盤口變更統一透過此 API 打包 JSON 同步。
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| collect | string | ✅ | 固定值 "UserConfig" |
| jsonStr | string | ✅ | JSON 字串,包含各平台賠率設定等配置 |
Response: 無 data,僅含 code 和 message。
jsonStr 格式範例
jsonStr 由 IFHomeServices.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=日間。game為GameTyperawValue。
版本檢查
版本檢查
GET api/forehead/system/version — urlForm — STAPI.VersionInfoRequest
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| bundleID | string | ✅ | App Bundle Identifier |
| username | string | ✅ | 用戶名(未登入為空字串) |
Response:
| 欄位 | 型別 | 說明 |
|---|---|---|
| content | String | 更新內容說明 |
| name | String | 標題 |
| version | String | 最新版本號 |
| url | String | plist 檔案 URL |
| h5url | String | H5 頁面 URL |
| status | Int | 0=強制, 1=不強制 |
| updateType | Int | 0=不強制, 1=強制更新, 2=證書掉線跳網頁 |
| certificateType | Int | 0=企業, 1=超級簽 |
賠率接受策略
| 屬性 | 平台 | 值域 | jsonStr Key |
|---|---|---|---|
| oddsSTID | BB 體育 | 0=接受更好, 1=接受任何, 2=不接受 | STAccept |
| oddsUPID | UP 體育 | 0=接受更好, 1=接受任何, 2=不接受 | UPAccept |
| oddsOBID | DB 體育 | 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:) 立即生效;同時透過 updateOddsSetup 將 pattern 同步後端 |
| 賠率接受策略 | 本地 + 後端同步 | IFUserModel 本地保存;透過 UpdateOddsConfigRequest 同步後端 |
| 盤口類型 | 本地 + 後端同步 | handicapID → updateOddsSetup |
| 返水自動領取 | 純後端 | RebateStatusRequest / SetRebateStatusRequest,無本地快取 |
| 推送/震動開關 | 本地 + 後端同步 | push_notice / vibrate → updateOddsSetup |
| 版本檢查 | 純後端 | 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 = 夜間