天天看點

用一個變量切換不同管道,SDK接入整合

在遊戲開發的最後,都會涉及到接 SDK 的工作,每個人也都有自己不同的解決方案。在這裡将我自己的做法介紹給大家,僅供參考。

SDK 主要實作幾個功能:

  1. 用一個變量切換不同管道。
  2. 屏蔽所有管道的差異性

類圖:

用一個變量切換不同管道,SDK接入整合

目錄結構大緻為:

用一個變量切換不同管道,SDK接入整合

下面介紹一下每個類的作用

BaseChannel:

所有管道類的父類,抽象類,判斷是否用某項功能并且調用對應的功能傳回調用的結果,負責屏蔽各個管道的差異性,通過為每個功能定義一個屬性,類型為BaseXXX,然後使用的時候判斷這個屬性是否為真,如果為真會調用對應的方法。如果沒有就不必處理,或者直接傳回成功。

關鍵代碼:

用一個變量切換不同管道,SDK接入整合

SDKManager:

各個管道的工廠類,根據設定的管道号建立不同的channel。在sdk外部使用的時候使用SDKManager.getChannel().showBanner((result:booelan)=>{}) 的形式完成調用。不要根據具體平台做邏輯劃分,那樣你的代碼會越來越亂。

用一個變量切換不同管道,SDK接入整合

這裡的channelID可以有三種初始化方式:

  1. 在代碼中修改,好處是如果遊戲需要資源伺服器,那麼各管道資源可以公用一份,壞處是每次釋出一個管道,都需要重新編譯打包。
  2. 放到配置檔案中加載後讀取,好處就是釋出不同的管道隻需要在配置檔案中修改管道号。壞處就是如果需要資源伺服器,各管道不能公用一份資源。當然,如果配置不放到資源伺服器也是可以的。
  3. 通過url獲得。這個是h5遊戲的做法,因為不同的管道傳給遊戲的url中可以帶着管道号。

相關的資料定義如下:

用一個變量切換不同管道,SDK接入整合
用一個變量切換不同管道,SDK接入整合

功能類介紹

  • BaseRewardAd: 激勵視訊的基類,抽象類,定義了所有管道的激勵視訊功能的共有方法和共有屬性。值得一提的是,該結構可以支援不同位置彈出的激勵視訊使用不同的廣告ID。
  • BaseBanner:banner廣告基類,抽象類。
  • BaseLogin: 登陸功能的基類
  • BaseShare:分享功能的基類
  • BaseInsertAd:插屏廣告的基類。

具體使用方式:以微信為例

首先建立類WXChannel 繼承 BaseChannel因為隻接了阿拉丁事件統計和分享功能,是以隻執行個體化了這兩個具體的類。其中的屬性已經在BaseChannel中聲明。

用一個變量切換不同管道,SDK接入整合

繼續閱讀