Skip to content

路由系統(開發文檔)

最後更新:2026-04-10

📖 功能說明請參考 路由系統


架構

相關檔案

路由核心(5 個)
檔案說明
.../Main/RouterComponent.h路由頭文件
.../Main/IFMainSwitch.h全域開關 Header
.../Main/IFMainSwitch.m全域開關實作
.../Main/BBUrlListModel.hURL 列表 Model Header
.../Main/BBUrlListModel.mURL 列表 Model 實作

基礎路徑:BBSport/Tools/RouterComponent/Classes/

常數定義(10 個)
檔案說明
.../Service/IFLoginRegisterConfig.h登入/錢包常數 Header
.../Service/IFLoginRegisterConfig.m登入/錢包常數實作
.../Service/IFUserInfoConfig.h用戶資訊常數 Header
.../Service/IFUserInfoConfig.m用戶資訊常數實作
.../Service/LFWalletInfoConfig.h錢包常數 Header
.../Service/LFWalletInfoConfig.m錢包常數實作
.../Service/IFSportConfig.h體育常數 Header
.../Service/IFSportConfig.m體育常數實作
.../Service/IFLiveConfig.h直播常數 Header
.../Service/IFLiveConfig.m直播常數實作

基礎路徑:BBSport/Tools/RouterComponent/Classes/

路由註冊(5 個)
檔案說明
BBSport/Tab/我的/Mine/Login_Register/ModuleApi.m登入模組
BBSport/Tab/我的/Mine/Service/WalletModuleApi.m錢包模組
BBSport/Tab/我的/Mine/Service/ConfigManager.swift個人中心
BBSport/Tab/体育/Sport/Common/SportComponent.swift體育模組
BBSport/Tab/游戏/Amuse/Lottery/Classes/Config/LotteryConfigManager.swift彩票模組

URL Scheme 分類

Scheme用途
LG://登入相關
WL://錢包及通用服務
HP://首頁相關
UI://UI 元件
SPORT://體育模組

路由清單(登入/錢包/通用)

常數名URL Pattern對應動作
LoginByTokenWL://LoginByTokenTOKEN 免登入
OpenLoginRegisterVCLG://OpenLoginRegisterVC開啟登入/注冊頁
OpenLiveChatVCWL://OpenLiveChatVC開啟客服系統
OpenTransferWalletWL://OpenTransferWallet一鍵轉帳
GetAllWalletBalanceWL://GetAllWalletBalance取得所有錢包餘額
GetRechargeVCWL://GetUserInfoVC開啟充值頁

路由清單(個人中心)

常數名URL Pattern對應動作
GetUserInfoVCHP://GetUserInfoVC取得個人中心控制器
GetNewsViewControllerLG://BBMineNewsViewController取得廣場控制器
GetBBHomeViewControllerLG://GetBBHomeViewController取得娛樂首頁控制器
OpenSafeCenterVCUI://OpenSafeCenterVC開啟安全中心
GetNoticeCountUI://GetNoticeCount取得未讀通知數量

註冊於 ConfigManager.swiftUserInfoConfigManager.registerService()

路由清單(彩票)

常數名URL Pattern對應動作
(硬編碼)openLotteryComponent開啟彩票模組(傳入 currentNavdeviceIduserIduserNickname

註冊於 LotteryConfigManager.swift,使用硬編碼字串而非常數

路由清單(體育)

常數名URL Pattern對應動作
OpenEventDetailControllerSPORT://OpenEventDetailController跳轉賽事詳情
OpenStreamerDetailControllerSPORT://OpenStreamerDetailController跳轉主播詳情
OpenEventDetailControllerWithEidSPORT://OpenEventDetailControllerWithEid透過 eid 跳轉(支援跟單)
OpenStreamerDetailControllerWithEidSPORT://OpenStreamerDetailControllerWithEid透過 eid 跳轉娛樂主播詳情
OpenEventListSPORT://OpenEventListUrl跳轉運動頁面
UploadLogSPORT://UploadLog日誌上傳(OC 用)

路由調用範例

objc
// OC 呼叫範例 — 跳轉賽事詳情
NSDictionary *params = @{
    @"eventId": @"1010311",
    @"plat": @"up",
    @"sportId": @(1),
    @"isInplay": @(YES),
    @"pt": @(4),               // 4 = 滾球
    @"openLive": @(0),
    @"liveHostId": @(0)
};
[MGJRouter openURL:OpenEventDetailController
      withUserInfo:params
        completion:nil];
swift
// Swift 呼叫範例 — 一鍵轉帳
MGJRouter.openURL(OpenTransferWallet,
                  withUserInfo: ["toChannelId": IFCommonUtil.fbSportChannelID()],
                  completion: { _ in
                      // 轉帳完成後的回調
                  })

參數透過 withUserInfo: 傳入字典,Handler 中以 routerParameters[MGJRouterParameterUserInfo] 取出。

H5 JS Bridge 路由

App 內 WebView 使用 WKScriptMessageHandler 進行 H5 ↔ Native 通訊。

協議名方向說明
window.webkit.messageHandlers.didTap.postMessage(...)H5 → Native站內信點擊事件

JS Bridge 目前使用範圍較小(主要在 BBMessageWebViewController),大部分 H5 頁面透過 IFStaticWebViewController / IFNewStaticWebViewController 加載,以 URL Scheme 和 userInfo 攔截方式進行通訊,而非標準 JS Bridge 協議。

推播點擊路由流程

注意事項

  • GetRechargeVC 的 URL 為 WL://GetUserInfoVC,與 GetUserInfoVCHP://GetUserInfoVC)名稱類似但 Scheme 不同
  • 彩票模組使用硬編碼字串 "openLotteryComponent" 而非常數

實作重點

  • OC 模組使用 +load 自動註冊,App 啟動即生效;Swift 模組需手動呼叫 registerService()
  • 參數傳遞:透過 withUserInfo: 傳入字典,Handler 中以 routerParameters[MGJRouterParameterUserInfo] 取出
  • 頁面堆疊管理:跳轉賽事詳情或主播詳情時,若頂部已是同類型則移除前一個,避免堆疊過深
  • 跟單流程OpenEventDetailControllerWithEid 透過 RxSwift Observable.zip 等待投注資料與賽事資訊;盤口存在且未關閉 → 直接開啟投注面板
  • 橫豎屏判斷OpenStreamerDetailControllerisHorizontalScreen 參數決定直式或橫式播放器