在上一篇《TypeSDK聚合sdk設計基本原則》中我們提到了,設計聚合sdk需要設計開發(fā)平臺部分的接口,以及設計發(fā)布平臺的聚合這2個大模塊。那么我們今天就先來講講發(fā)布平臺之一:安卓平臺的統(tǒng)一化接口結構和思路。
一、相關的需求
安卓平臺的統(tǒng)一化接口,我們需要考慮到具體以下的幾點:
1.對外需要有統(tǒng)一的接口,保證不同的渠道sdk 對同一個游戲來說,是調(diào)用相同的接口,傳遞相同的參數(shù)
2.對內(nèi)需要有一套擴展性很好的框架,可以應對不同渠道的sdk差異性
二、設計的模塊
那么針對這些考慮點,安卓平臺的統(tǒng)一化接口,我們將主要分成以下幾個部分來設計:
1.基礎架構設計
2.具體渠道實現(xiàn)類
3.統(tǒng)一化對外平臺接口
4.跨平臺交互的設計
三、具體的細節(jié)
1.統(tǒng)一化的基礎架構
針對統(tǒng)一化的基礎架構,我們主要設計了以下的一個主體框架
我們主要實現(xiàn)了這么一套結構
1.我們創(chuàng)建通用的基礎抽象類(BaseActivity)。
該類中,包含了所有sdk都有,但是實現(xiàn)不同的接口,這些接口作為抽象函數(shù),要求每個渠道的具體實現(xiàn)類都去實現(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 大退游戲(殺進程):void exit game();
1.8 顯示分享 void showShare(string _json_string)
還需要通用的抽象接口,用作sdk框架的拓展
1.9 根據(jù)函數(shù)名,調(diào)用具體實現(xiàn)類中的函數(shù):
string DoAnyFunction(string _function_name,string _json_string)
我們還包含了通用固定實現(xiàn)的接口,用作sdk框架的補充
1.10.獲取本地渠道的配置:string getPlatfromInfo()
1.11.獲取緩存在安卓層的用戶信息:string getUserInfo()
2.我們根據(jù)每一個渠道的sdk不同,單獨創(chuàng)建每個渠道自己的實現(xiàn)類Bonjour_xx。
2.1 這個類繼承通用的框架基類(BaseActivity)。
2.2 在該框架下,實現(xiàn)基類所有的抽象接口。如果沒有該接口的功能,也需要做出相應的處理,例如輸出log日志。
2.3 同時該類可以增加渠道自有的特殊接口(例如獲取好友列表)
3.發(fā)布平臺有一個統(tǒng)一的給外部調(diào)用接口實現(xiàn)的類:mainActivity
3.1.mainActivity給unity調(diào)用時,需要繼承UnityPlayerActivity。在給cocos2dx調(diào)用時,需要繼承Cocos2dxActivity。我們的主要目的是給游戲的開發(fā)平臺調(diào)用,就是說,游戲開發(fā)平臺是哪個,那我們就需要寫這么一個給其調(diào)用的mainActivity。
3.2 mainActivity中需要統(tǒng)一化對外的接口名字,并且在每個接口中,使用 bonjour_xx的實例對象,來實現(xiàn)具體接口的業(yè)務邏輯
3.2 mainActivity中需要能夠讓開發(fā)平臺(unity/cocos2dx)需要使用 bonjour_xx來調(diào)用基類的通用拓展的函數(shù)
4.跨平臺交互部分
跨平臺交互我們需要考慮兩個方面
a.如何將從發(fā)布平臺調(diào)用開發(fā)平臺函數(shù)
b.如何將從開發(fā)平臺調(diào)用發(fā)布平臺函數(shù)
1.在安卓層,我們只需要將需要給到unity調(diào)用的函數(shù),寫在之前提到過的mainactivty中,在unity中,可以直接通過函數(shù)名來調(diào)用mainactivity的函數(shù)
2.在unity層,提供了我們通用的跨平臺調(diào)用接口
void UnitySendMessage(string beheaver_name, string function_name, string json_string );
我們只需要知道unity部分用來接收消息的腳本名字,需要執(zhí)行的腳本函數(shù)名,以及傳遞的參數(shù),就可以調(diào)用unity的響應函數(shù)了。
綜上安卓向unity平臺傳遞數(shù)據(jù)和調(diào)用函數(shù),主要通過消息機制發(fā)送消息
unity向安卓平臺傳遞參數(shù)和調(diào)用函數(shù),則通過函數(shù)名,用反射來調(diào)用mainActivity里的接口。
以上就是我們安卓發(fā)布平臺的聚合sdk設計思路細節(jié),下一章我們將講述ios聚合sdk的設計思路細節(jié)。
如果想了解更多,請聯(lián)系我們或關注官網(wǎng)
了解更多:www.typesdk.com
問題解答:1771930259
聯(lián)系郵箱:qianyuzhou@typesdk.com
項目地址:https://github.com/typesdk
更多建議: