Appearance
系統設定
最後更新:2026-04-07
功能說明
系統設定分為兩個層級:
通用系統設定(BBSystemSettings):位於「我的」Tab 下,提供震動設置、返水自動領取、日/夜間主題切換、版本更新檢查、登出。
體育設定(SportSet):位於「我的」或體育相關頁面,提供盤口設置(歐洲/香港盤)、各平台賠率接受策略、進球推送設定、投注音效設置、賽事列表顯示模式。
使用者流程
通用系統設定
- 從「我的」頁面點擊「系統設定」→
BBSystemSettingsViewController - 震動設置 / 返水自動領取 → UISwitch 切換
- 主題模式 → BBSystemSegmentedControl 切換(索引 0 = 日間,索引 1 = 夜間)
- 版本號 → 點擊 cell 呼叫版本檢查 API,有新版則跳轉
BBVersionController - 登出 → 彈出確認框 → 執行登出
體育設定
- 從「我的」或體育頁進入
SportSetViewController - 賠率/盤口變更後透過
IFHomeServices.updateOddsSetup()同步後端 - 設定值存放於
IFUserModel.sharedInstance()的各屬性中
頁面跳轉
- 「我的」首頁 → 系統設定 →
BBSystemSettingsViewController - 系統設定版本號點擊 →
BBVersionController(有新版時) - 系統設定登出 →
popToRootViewController - 「我的」首頁 → 體育設定 →
SportSetViewController
技術視角(開發看這裡)
相關檔案
| 類型 | 檔案路徑 |
|---|---|
| ViewController(系統設定) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SystemSet/C/BBSystemSettingsViewController.swift |
| Cell | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SystemSet/V/BBSystemSettingsCell.swift |
| SegmentedControl | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SystemSet/V/BBSystemSegmentedControl.swift |
| ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SystemSet/VM/BBSystemSettingsViewModel.swift |
| ViewController(體育設定) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/V/SportSetViewController.swift |
| 設定同步 Service | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Service/IFHomeServices.swift |
| 日夜模式常量定義 | /Users/user/Work/bbsport-new/BBSport/STUIKit/STUITools/STDayNightDefine.swift |
| 顏色管理(OC) | /Users/user/Work/bbsport-new/BBSport/Tools/UtilityToolComponentOC/Classes/Helper/ColorManager/STColorManager.m |
| LanguageManager | /Users/user/Work/bbsport-new/BBSport/Tools/LanguageManager/LanguageManager.swift |
| IFUserModel (OC) | /Users/user/Work/bbsport-new/BBSport/STUIKit/STBusiness/Models/User/IFUserModel.m |
| ViewModel(Cell) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SystemSet/VM/BBSystemSettingsCellViewModel.swift |
| Service(設定管理) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Service/ConfigManager.swift |
| Service(錢包 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Service/IFWalletService.m |
| Service(錢包模組 API) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Service/WalletModuleApi.m |
| Model(公告服務) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/M/NoticeService.swift |
| Model(OB 公告) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/M/OBNoticeModel.swift |
| Model(ST 公告) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/M/STNoticeModel.swift |
| ViewController(公告分頁) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/V/MatchNoticePageViewController.swift |
| ViewController(公告基底) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/V/NoticeBoardBaseViewController.swift |
| Cell(公告列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/V/NoticeBoardTableViewCell.swift |
| ViewController(教學影片) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/V/TapeCourseViewController.swift |
| ViewModel(DB 公告) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/VM/DBNoticeBoardViewModel.swift |
| ViewModel(FB 公告) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/VM/FBNoticeBoardViewModel.swift |
| ViewModel(公告分頁) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/VM/MatchNoticePageViewModel.swift |
| ViewModel(公告基底) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/VM/NoticeBoardBaseViewModel.swift |
| ViewModel(公告 Cell) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/VM/NoticeBoardTemplateCellModel.swift |
| ViewModel(UP 公告) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/VM/UPNoticeBoardViewModel.swift |
| API(返水狀態查詢) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Settings/STAPI+RebateStatusRequest.swift |
| API(設定返水狀態) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Settings/STAPI+SetRebateStatusRequest.swift |
| API(更新賠率設定) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Settings/STAPI+UpdateOddsConfigRequest.swift |
| API(信用投注設定) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/Settings/STAPI+XJBetConfigRequest.swift |
| API(版本資訊) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+VersionInfoRequest.swift |
| API(版本安裝) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+VersionInstallRequest.swift |
| API(版本用戶紀錄) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+VersionUserRecordRequest.swift |
| API(好友域名) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+FriendDomainRequest.swift |
| Service(FB 賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/C/FBMatchResultDetailServices.swift |
| Service(OB 冠軍賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/C/OBMatchResultChampionServices.swift |
| ViewController(OB 賽果篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/C/OBMatchResultsFilterController.m |
| ViewController(ST 賽果篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/C/STMatchResultsFilterController.m |
| Service(UP 賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/C/UPMatchResultDetailServices.swift |
| DB(DB 賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/DB/DBMatchResultDB.swift |
| DB(FB 賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/DB/FBMatchResultDB.swift |
| DB(賽果基底) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/DB/MatchResultDB.swift |
| DB(UP 賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/DB/UPMatchResultDB.swift |
| Cell(賽果數據空狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/Cell/MatchResultDetailDataEmptyCell.swift |
| Cell(賽果比分) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/Cell/MatchResultDetailDataScoreCell.swift |
| Cell(賽果比分列表 2) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/Cell/MatchResultDetailDataScoreList2Cell.swift |
| Cell(賽果比分列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/Cell/MatchResultDetailDataScoreListCell.swift |
| Cell(賽果多比分) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/Cell/MatchResultDetailDataScoresCell.swift |
| Cell(賽果標題) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/Cell/MatchResultDetailDataTitleCell.swift |
| Extension(美式足球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+AmericanFootBall.swift |
| Extension(棒球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+BaseBall.swift |
| Extension(籃球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+BasketBall.swift |
| Extension(足球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+FootBall.swift |
| Extension(冰球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+IceHockey.swift |
| Extension(MMA) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+MMA.swift |
| Extension(橄欖球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+Rugby.swift |
| Extension(斯諾克) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+Snooker.swift |
| Extension(網球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+Tennis.swift |
| Extension(排球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView+VolleyBall.swift |
| View(賽果數據) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Data/MatchResultDetailDataView.swift |
| View(賽果 Header 隊伍) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Header/MatchResultDetailHeaderTeamView.swift |
| Extension(賽果 Header 卡片) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Header/MatchResultDetailHeaderView+CardView.swift |
| View(賽果 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Header/MatchResultDetailHeaderView.swift |
| View(賽果詳情) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/MatchResultDetailView.swift |
| ViewController(賽果詳情) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/MatchResultDetailViewController.swift |
| ViewModel(賽果詳情) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/MatchResultDetailViewModel.swift |
| Model(賽果詳情 - 美足) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+AmericanFootBall.swift |
| Model(賽果詳情 - 棒球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+BaseBall.swift |
| Model(賽果詳情 - 籃球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+BasketBall.swift |
| Model(賽果詳情 - 轉換) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+Convert.swift |
| Model(賽果詳情 - 足球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+FootBall.swift |
| Model(賽果詳情 - 冰球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+IceHockey.swift |
| Model(賽果詳情 - MMA) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+MMA.swift |
| Model(賽果詳情 - 橄欖球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+Rugby.swift |
| Model(賽果詳情 - 斯諾克) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+Snooker.swift |
| Model(賽果詳情 - 網球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+Tennis.swift |
| Model(賽果詳情 - 排球) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel+VolleyBall.swift |
| Model(賽果詳情基底) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/Detail/Model/MatchDetailModel.swift |
| Cell(聯賽篩選列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/LeagueFilter/LeagueFilterListCell.swift |
| View(聯賽篩選 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/LeagueFilter/LeagueFilterListHeader.swift |
| View(聯賽篩選列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/LeagueFilter/LeagueFilterListView.swift |
| ViewModel(聯賽篩選列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/LeagueFilter/LeagueFilterListViewModel.swift |
| View(聯賽篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/LeagueFilter/LeagueFilterView.swift |
| ViewController(聯賽篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/LeagueFilter/LeagueFilterViewController.swift |
| ViewModel(聯賽篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/LeagueFilter/LeagueFilterViewModel.swift |
| Model(篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/M/FilterModel.swift |
| Model(賽果 Cell OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/M/MatchResultCellModel.m |
| Model(賽果日期 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/M/MatchResultDateCateModel.m |
| Model(賽果 Section OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/M/MatchResultSectionModel.m |
| Model(賽事排序 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/M/MatchSortModel.m |
| View(賽事篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/MatchFilter/MatchFilterView.swift |
| ViewModel(賽事篩選) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/MatchFilter/MatchFilterViewModel.swift |
| Cell(賽事列表基底) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/MatchList/Cell/BaseMatchListCell.swift |
| Cell(冠軍賽事) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/MatchList/Cell/ChampionMatchListCell.swift |
| View(賽事列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/MatchList/MatchListView.swift |
| ViewModel(賽事列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/MatchList/MatchListViewModel.swift |
| Model(篩選日期) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/New/Model/FilterDateModel.swift |
| View(新版賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/New/NewMatchResultView.swift |
| ViewController(新版賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/New/NewMatchResultViewController.swift |
| ViewModel(新版賽果) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/New/NewMatchResultViewModel.swift |
| Extension(Hook OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/T/NSObject+HookExtension.m |
| Extension(空資料集 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/T/UIScrollView+EmptyDataSet.m |
| Extension(折疊展開 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/T/UITableView+FoldExpand.m |
| Extension(Header 點擊 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/T/UITableViewHeaderFooterView+DidSelect.m |
| View(聯賽按鈕) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/MatchLeagueButton.swift |
| View(聯賽選擇列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/MatchLeagueChooseListView.swift |
| View(聯賽索引) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/MatchLeagueSectionIndexView.swift |
| Cell(新版聯賽選擇) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/MatchNewLeagueChooseCell.swift |
| View(賽果篩選底部 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/MatchResultsFilterBottomView.m |
| Cell(賽事排序 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/MatchSortCollectionViewCell.m |
| View(賽事排序 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/MatchSortView.m |
| View(運動選擇 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/MatchSportChooseBar.m |
| View(導航標題 OC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/NavtitleView.m |
| View(賽果導航) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/SportMenu/EventResult/V/ResultNavView.swift |
API
| 功能說明 | Namespace | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 取得返水自動領取狀態 | STAPI | api/forehead/activity/rebate/get | POST urlForm | 無 |
| 設定返水自動領取狀態 | STAPI | api/forehead/activity/rebate/set | POST urlForm | switchKey: 1=開/0=關 |
| 更新賠率/設定配置 | STAPI | api/forehead/system/cfg/set | POST urlForm | collect="UserConfig", jsonStr |
| 版本檢查 | STAPI | api/forehead/system/version | GET urlForm | bundleID, username |
資料模型
賠率接受策略(IFUserModel 屬性)
| 屬性 | 平台 | 值域 |
|---|---|---|
oddsSTID | BB體育 | 0=接受更好, 1=接受任何, 2=不接受 |
oddsUPID | UP體育 | 0=接受更好, 1=接受任何, 2=不接受 |
oddsOBID | DB體育 | 1=接受更好, 2=接受任何, 3=不接受 |
版本檢查 Response
| 欄位 | 說明 |
|---|---|
version | 最新版本號 |
status | 0=強制, 1=不強制 |
updateType | 0=不強制, 1=強制更新, 2=證書掉線跳網頁 |
certificateType | 0=企業, 1=超級簽 |
實作重點
主題切換機制:使用
SwiftTheme框架,ThemeManager.setTheme(index:)切換;同時更新 OC 端STColorManager;發送STNotify.nightPatternOpen.post()全域刷新 UI返水自動領取:進入頁面呼叫
RebateStatusRequest取得當前狀態;使用者關閉時額外彈出STNormalAlertView提醒手動領取體育設定同步:所有體育設定統一透過
IFHomeServices.updateOddsSetup()打包成 JSON 呼叫UpdateOddsConfigRequest語言切換:透過
Bundle.setLanguage(lang:)設定;內建防抖機制(間隔 < 1 秒延遲合併觸發);發送STNotify.languageDidChange版本檢查:透過
IFCommonUtil.compareVersion()比對;有新版跳轉BBVersionController;無新版顯示 toast「已是最新版本」登出確認:使用
STNormalAlertView.leftAlertView樣式(取消在左、確認在右);確認後執行GameStatusManager.shared.logout()
API 呼叫流程
進入設定頁 (BBSystemSettingsViewController)
viewDidLoad → 無 API 呼叫 (全部為本地設定)
├─ 搖一搖開關 → 本地 UserDefaults
├─ 自動領返水 → 本地 Toggle
├─ 深色/淺色模式 → 本地 Toggle
└─ 版本號 → 顯示用版本檢查
用戶點擊「版本檢查」
└─ IFCommonUtil.compareVersion()
├─ 有新版 → 跳轉 BBVersionController
└─ 無新版 → toast「已是最新版本」登出
用戶點擊「登出」→ 確認對話框
└─ GameStatusManager.shared.logout()