TYPESDK手游聚合SDK客戶端設(shè)計(jì)思路與架構(gòu)之二:安卓平臺(tái)統(tǒng)一化接口結(jié)構(gòu)及思路

2018-06-14 16:03 更新

在上一篇《TypeSDK聚合sdk設(shè)計(jì)基本原則》中我們提到了,設(shè)計(jì)聚合sdk需要設(shè)計(jì)開發(fā)平臺(tái)部分的接口,以及設(shè)計(jì)發(fā)布平臺(tái)的聚合這2個(gè)大模塊。那么我們今天就先來講講發(fā)布平臺(tái)之一:安卓平臺(tái)的統(tǒng)一化接口結(jié)構(gòu)和思路。

一、相關(guān)的需求

       安卓平臺(tái)的統(tǒng)一化接口,我們需要考慮到具體以下的幾點(diǎn):

       1.對(duì)外需要有統(tǒng)一的接口,保證不同的渠道sdk 對(duì)同一個(gè)游戲來說,是調(diào)用相同的接口,傳遞相同的參數(shù)

       2.對(duì)內(nèi)需要有一套擴(kuò)展性很好的框架,可以應(yīng)對(duì)不同渠道的sdk差異性

二、設(shè)計(jì)的模塊

       那么針對(duì)這些考慮點(diǎn),安卓平臺(tái)的統(tǒng)一化接口,我們將主要分成以下幾個(gè)部分來設(shè)計(jì):

       1.基礎(chǔ)架構(gòu)設(shè)計(jì)

       2.具體渠道實(shí)現(xiàn)類

       3.統(tǒng)一化對(duì)外平臺(tái)接口

       4.跨平臺(tái)交互的設(shè)計(jì)

三、具體的細(xì)節(jié)

       1.統(tǒng)一化的基礎(chǔ)架構(gòu)

       針對(duì)統(tǒng)一化的基礎(chǔ)架構(gòu),我們主要設(shè)計(jì)了以下的一個(gè)主體框架

我們主要實(shí)現(xiàn)了這么一套結(jié)構(gòu)

1.我們創(chuàng)建通用的基礎(chǔ)抽象類(BaseActivity)。

       該類中,包含了所有sdk都有,但是實(shí)現(xiàn)不同的接口,這些接口作為抽象函數(shù),要求每個(gè)渠道的具體實(shí)現(xiàn)類都去實(shí)現(xiàn)。

       1.1 初始化接口:void init()

       1.2 登錄接口: void login()

       1.3 登出接口:void logout()       1.4 支付接口:string pay(string _json_string)

       1.5 提交玩家數(shù)據(jù):void updatePlayerInfo( string _json_string)

       1.6顯示用戶中心: void showPlayerCenter()

       1.7 大退游戲(殺進(jìn)程):void exit game();

       1.8 顯示分享 void showShare(string _json_string)

       還需要通用的抽象接口,用作sdk框架的拓展

       1.9 根據(jù)函數(shù)名,調(diào)用具體實(shí)現(xiàn)類中的函數(shù):

       string DoAnyFunction(string _function_name,string _json_string)

       我們還包含了通用固定實(shí)現(xiàn)的接口,用作sdk框架的補(bǔ)充

       1.10.獲取本地渠道的配置:string getPlatfromInfo()

       1.11.獲取緩存在安卓層的用戶信息:string getUserInfo()

2.我們根據(jù)每一個(gè)渠道的sdk不同,單獨(dú)創(chuàng)建每個(gè)渠道自己的實(shí)現(xiàn)類Bonjour_xx。

       2.1 這個(gè)類繼承通用的框架基類(BaseActivity)。

       2.2 在該框架下,實(shí)現(xiàn)基類所有的抽象接口。如果沒有該接口的功能,也需要做出相應(yīng)的處理,例如輸出log日志。

       2.3 同時(shí)該類可以增加渠道自有的特殊接口(例如獲取好友列表)

3.發(fā)布平臺(tái)有一個(gè)統(tǒng)一的給外部調(diào)用接口實(shí)現(xiàn)的類:mainActivity

       3.1.mainActivity給unity調(diào)用時(shí),需要繼承UnityPlayerActivity。在給cocos2dx調(diào)用時(shí),需要繼承Cocos2dxActivity。我們的主要目的是給游戲的開發(fā)平臺(tái)調(diào)用,就是說,游戲開發(fā)平臺(tái)是哪個(gè),那我們就需要寫這么一個(gè)給其調(diào)用的mainActivity。

       3.2 mainActivity中需要統(tǒng)一化對(duì)外的接口名字,并且在每個(gè)接口中,使用 bonjour_xx的實(shí)例對(duì)象,來實(shí)現(xiàn)具體接口的業(yè)務(wù)邏輯

       3.2 mainActivity中需要能夠讓開發(fā)平臺(tái)(unity/cocos2dx)需要使用 bonjour_xx來調(diào)用基類的通用拓展的函數(shù)

4.跨平臺(tái)交互部分

       跨平臺(tái)交互我們需要考慮兩個(gè)方面

              a.如何將從發(fā)布平臺(tái)調(diào)用開發(fā)平臺(tái)函數(shù)

              b.如何將從開發(fā)平臺(tái)調(diào)用發(fā)布平臺(tái)函數(shù)

       1.在安卓層,我們只需要將需要給到unity調(diào)用的函數(shù),寫在之前提到過的mainactivty中,在unity中,可以直接通過函數(shù)名來調(diào)用mainactivity的函數(shù)

       2.在unity層,提供了我們通用的跨平臺(tái)調(diào)用接口

       void UnitySendMessage(string beheaver_name, string function_name, string json_string );

       我們只需要知道unity部分用來接收消息的腳本名字,需要執(zhí)行的腳本函數(shù)名,以及傳遞的參數(shù),就可以調(diào)用unity的響應(yīng)函數(shù)了。

       綜上安卓向unity平臺(tái)傳遞數(shù)據(jù)和調(diào)用函數(shù),主要通過消息機(jī)制發(fā)送消息

       unity向安卓平臺(tái)傳遞參數(shù)和調(diào)用函數(shù),則通過函數(shù)名,用反射來調(diào)用mainActivity里的接口。

       以上就是我們安卓發(fā)布平臺(tái)的聚合sdk設(shè)計(jì)思路細(xì)節(jié),下一章我們將講述ios聚合sdk的設(shè)計(jì)思路細(xì)節(jié)。


如果想了解更多,請(qǐng)聯(lián)系我們或關(guān)注官網(wǎng)

了解更多:www.typesdk.com

問題解答:1771930259

聯(lián)系郵箱:qianyuzhou@typesdk.com

項(xiàng)目地址:https://github.com/typesdk


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)