作為一個(gè)聚合sdk的客戶端,勢必針對每一個(gè)不同渠道sdk有一套自己的配置文件。同時(shí),作為聚合sdk客戶端本身也會有相關(guān)的功能配置需求。加上部分的游戲開服和登錄等等在線應(yīng)急功能的需求,也最好是需要有一套配置文件。同時(shí)這些配置文件有些需要放在本地,有些則需要放在資源服上讀取,有些則要放在聚合sdk服務(wù)器上讀取。零零總總的說了這么多,那么讓我們來理一下思路,看看到底要有那些配置文件?! ?/p>
從功能分類來說
1. 針對單個(gè)渠道sdk的相關(guān)配置
2. 針對聚合sdk額外功能的相關(guān)配置
從讀取難易來說
1. 放在本地的配置(讀取速度快且必定成功,但是有被修改風(fēng)險(xiǎn),很難做更新)
2. 放在服務(wù)器的配置(讀取成功存在失敗因素,幾乎沒有被修改風(fēng)險(xiǎn),很容易做更新)
3. 寫在代碼里文件的配置(讀取速度快,被修改難度大,但是很難做更新)
鑒于上述的這些分析,那么我們做了以下的這些規(guī)劃
1. 存放本地的配置的文件:localConfig其中包含了以下幾點(diǎn)內(nèi)容:
a. 單個(gè)渠道sdk的非關(guān)鍵性配置:例如appid,渠道編號,等
b. 單個(gè)游戲包的sdk額外功能;是否加載廣告檢測,是否使用熱更新等
2. 存放在服務(wù)器的配置文件:serverConfig其中包含了以下幾點(diǎn)內(nèi)容
a. 渠道的回調(diào)地址,appkey等關(guān)鍵性參數(shù)
. 游戲登錄的白名單列表等
c. 游戲log的是否開啟
d. 游戲的sdk輔助功能是否開啟使用的開關(guān)等
3. 寫在代碼文件里的配置:codeConfig其中包含了以下幾點(diǎn)內(nèi)容
a. 從服務(wù)器讀取文件的下載地址列表,需要有多個(gè)下載地址
b. 解析本地配置文件的相關(guān)算法(本地配置文件可能加密)
c. 其他和sdk聚合服通信的地址和接口。
接下來我們來說說,這三類配置文件分別在什么時(shí)候讀取和使用。
存放本地的配置的文件
這種建議直接在游戲啟動時(shí)讀取,因?yàn)閺谋镜匚募D(zhuǎn)換成內(nèi)存中的數(shù)據(jù),仍然是需要一個(gè)輸入/輸出流的操作,存在異常的捕獲和處理。本地配置文件應(yīng)該在sdk功能正式啟用前就被加載,換言之,在sdk的初始化之前,需要將本地配置文件讀取出來并且存到內(nèi)存中。在接下來的sdk初始化過程中,將會用到本地配置文件的appid這些渠道sdk配置參數(shù)。
存放在服務(wù)器的配置文件這些數(shù)據(jù)建議先在每個(gè)具體的邏輯接口調(diào)用前讀取一次。這些配置文件中的數(shù)據(jù),有以下這些的相關(guān)設(shè)計(jì)
a. 這些數(shù)據(jù)本身需要有一個(gè)默認(rèn)值,防止在網(wǎng)絡(luò)不好的情況下無數(shù)據(jù)可用,造成邏輯上的卡死。
b. 這些數(shù)據(jù)每次使用的時(shí)候,都需要刷新重新讀取一遍,因?yàn)檫@些數(shù)據(jù)存在的最大用處就是動態(tài)的后臺更新相關(guān)配置
c. 這些數(shù)據(jù)每次讀取到以后,都需要緩存進(jìn)內(nèi)存中。如果下次從服務(wù)器沒有讀到相關(guān)配置,則使用緩存在內(nèi)存中的數(shù)據(jù)
d. 這些數(shù)據(jù)需要在獲取到/超時(shí)后再調(diào)用后面的邏輯,不要做異步的接口調(diào)用。
寫在代碼文件里的配置:codeConfig這些配置文件因?yàn)槭菍懺诖a中的,所以不需要緩存進(jìn)內(nèi)存中,它們本身應(yīng)該是靜態(tài)常量,可以每次需要使用的時(shí)候,直接讀取就行。
接下來特地說下有關(guān)代碼里的配置:coneConfig因?yàn)橐苿釉O(shè)備本身固有問題,之前做項(xiàng)目的時(shí)候,有遇到過ip地址解析不了的情況,所以在讀取相關(guān)的服務(wù)器配置地址時(shí)候,我們做了以下的相關(guān)設(shè)置
a. 配置文件最好有域名的配置?! ?/p>
b. 同一個(gè)接口,有多套的備選地址,以防有一臺服務(wù)器無法訪問到,而造成邏輯上的中斷
c. 本身要有相關(guān)的超時(shí)機(jī)制,當(dāng)?shù)谝粋€(gè)ip訪問不到時(shí),才開始訪問第二個(gè),并且所有接口應(yīng)該都遵循這套邏輯
有關(guān)配置文件的數(shù)據(jù)格式,這里我們提及一些項(xiàng)目中遇到的實(shí)際情況我們當(dāng)初使用的數(shù)據(jù)格式是json,而在http協(xié)議中,”:\”這兩個(gè)符號是不能使用的,必須進(jìn)行URLEncode,在服務(wù)端和客戶端通信中,這個(gè)小問題常常被忽視。有關(guān)配置文件的一些設(shè)計(jì)思路,我們就先暫時(shí)講到這里。同時(shí)也歡迎廣大看客聯(lián)系我們typesdk的技術(shù),提出寶貴的意見和建議。
如果想了解更多,請聯(lián)系我們或關(guān)注官網(wǎng)
了解更多:www.typesdk.com
問題解答:1771930259
聯(lián)系郵箱:qianyuzhou@typesdk.com
項(xiàng)目地址:https://github.com/typesdk
更多建議: