Android 手游聚合SDK小知識(shí)(一)

Android 手游聚合SDK小知識(shí)(一)
Android 手游聚合SDK小知識(shí)(二) 聚合分包

前言

回頭想想肃弟,在安卓游戲SDK這個(gè)領(lǐng)域,我也呆了4年了风喇,從啥都不懂的小菜鳥(niǎo)议泵,逐漸靠自己不斷學(xué)習(xí)贡这,對(duì)這個(gè)行業(yè)也算有了一些理解,趁著最近有空,我想了一下睡陪,還是把最近這幾年對(duì)游戲SDK聚合的一些理解分享出來(lái)給大家,希望能和大家一起進(jìn)步夕凝。PS:目前我做的聚合SDK只能適用于國(guó)內(nèi)宝穗,海外谷歌包用的是aab,并且海外渠道sdk資源引用時(shí)經(jīng)常不使用反射码秉,所以海外SDK目前我還沒(méi)想出來(lái)如何聚合逮矛,希望有朋友能解決這個(gè)問(wèn)題分享給我。

1转砖、渠道SDK

一個(gè)游戲需要龐大的用戶(hù)量须鼎,畢竟玩的人越多,越多人充值府蔗,老板就賺得越多晋控,你的工資獎(jiǎng)金才能越多嘛,這時(shí)候就需要接入一些第三方渠道姓赤,讓他們幫你進(jìn)行有償推廣赡译,這些第三方渠道擁有大量用戶(hù),可以幫你進(jìn)行迅速的起量不铆,讓大家都去玩你的游戲蝌焚。

1.1、聯(lián)運(yùn)渠道SDK

我們可以接入一些聯(lián)運(yùn)SDK渠道誓斥,使用他們的渠道來(lái)幫我們推廣游戲只洒,百度、360劳坑、應(yīng)用寶毕谴,Huawei、OPPO 等距芬,包含了最核心的登陸涝开、支付等體系。如果接入了這些渠道蔑穴,就可以使用他們的SDK服務(wù)(登陸忠寻、支付等)。
當(dāng)然了存和,使用這些聯(lián)運(yùn)渠道奕剃,一般情況下都是要與對(duì)方分成的衷旅,充值的時(shí)候吊起來(lái)的是對(duì)方的充值界面,先充到對(duì)方的賬戶(hù)上纵朋,再進(jìn)行分成柿顶,一般來(lái)說(shuō)分成比例從37開(kāi)到19開(kāi)不等。

1.2操软、自有SDK渠道

如同上面說(shuō)的嘁锯,聯(lián)運(yùn)SDK需要與渠道方分成,而且分成比例極高聂薪,這個(gè)時(shí)候如果老板自己有穩(wěn)定的推廣渠道家乘,就可以使用自有的SDK,說(shuō)白了藏澳,自有SDK和聯(lián)運(yùn)渠道SDK本質(zhì)上沒(méi)什么區(qū)別仁锯,也擁有登錄、支付等一系列體系翔悠,只不過(guò)它屬于發(fā)行公司內(nèi)的的SDK业崖,使用自有的SDK就可以100%收入歸自己了,但是相應(yīng)的蓄愁,推廣的成本也要自己掏双炕,這里就不贅述了。
內(nèi)部SDK可以封裝在聚合SDK中撮抓,也可以單獨(dú)寫(xiě)成一個(gè)moudle妇斤,我這里是單獨(dú)寫(xiě)成了一個(gè)moudle,用的時(shí)候打包成aar丹拯,和聚合sdk一起給cp接入趟济,cp接入后就可以吊起我們自有的SDK,完成登錄支付等一系列操作咽笼,后續(xù)我再將包用腳本進(jìn)行渠道分包。

2戚炫、游戲研發(fā)(CP)

游戲研發(fā)也就是專(zhuān)門(mén)開(kāi)發(fā)游戲的公司剑刑,一般稱(chēng)為CP。

3双肤、聚合SDK

在游戲行業(yè)中施掏,聚合SDK可以理解為一個(gè)中間層,一個(gè)橋梁茅糜,作用是溝通游戲CP和渠道SDK七芭。
聚合SDK = 聚合層接口 + 渠道SDK(或者是自有SDK)
使用聚合SDK,聚合層接口不變蔑赘,變得是渠道SDK狸驳,可以在游戲接入一次聚合SDK后预明,用腳本自動(dòng)反編譯回編譯,替換掉渠道SDK代碼耙箍,實(shí)現(xiàn)一包多渠道撰糠,減少CP方的工作量。

圖中是游戲未接入聚合SDK的情況下辩昆,調(diào)用登錄邏輯阅酪。


222222.jpeg
  1. 游戲客戶(hù)端調(diào)用SDK客戶(hù)端的登錄API進(jìn)行登錄,SDK客戶(hù)端會(huì)拉起登錄界面
  2. SDK客戶(hù)端在登錄界面輸入賬密或調(diào)用第三方登錄
  3. SDK服務(wù)端校驗(yàn)登錄信息成功汁针,返回userID和token給SDK客戶(hù)端
  4. SDK客戶(hù)端通過(guò)回調(diào)將userID和token返回給游戲客戶(hù)端
  5. 游戲客戶(hù)端獲取到token和userID后术辐,將其傳給游戲服務(wù)器端
  6. 游戲服務(wù)器將數(shù)據(jù)傳給SDK服務(wù)器進(jìn)行校驗(yàn)
  7. 校驗(yàn)通過(guò),游戲服務(wù)器將用戶(hù)的賬戶(hù)信息返回給游戲客戶(hù)端
  8. 游戲客戶(hù)端登錄成功

上面的步驟解釋了游戲和渠道SDK的交互邏輯施无,理論上CP是可以直接接入SDK渠道的辉词,但是帆精,目前有一個(gè)問(wèn)題较屿,那就是如果有多個(gè)SDK渠道怎么辦,目前國(guó)內(nèi)大大小小的渠道有上百個(gè)卓练,如果要將這上百個(gè)渠道挨個(gè)接入隘蝎,這里面的工作量想必巨大無(wú)比,需要占用游戲研發(fā)非常多的工作時(shí)間襟企,那么有沒(méi)有這么一種方法嘱么,游戲研發(fā)接入一遍就可以實(shí)現(xiàn)完成多個(gè)sdk渠道的上架呢,這時(shí)候顽悼,聚合SDK就應(yīng)運(yùn)而生了曼振。
聚合SDK只有一個(gè),游戲研發(fā)只用接入一個(gè)聚合SDK蔚龙,然后剩下都交給聚合方冰评,由聚合方進(jìn)行分包上架。
下圖是加入聚合SDK后的登錄邏輯:


11111.jpeg

4木羹、聚合SDK對(duì)外接口及注意事項(xiàng)

1甲雅、初始化
Application 的初始化,讓CP使用或繼承我們的Application坑填,我們?cè)倮^承渠道方的Application抛人。
Activity中的init方法。
2脐瑰、登錄
統(tǒng)一登錄接口妖枚,接收渠道方的登錄回調(diào)參數(shù),再將登錄回調(diào)參數(shù)去聚合服務(wù)器校驗(yàn)苍在,通過(guò)校驗(yàn)后绝页,聚合服務(wù)器返回token和userID荠商,聚合SDK再將參數(shù)傳給游戲客戶(hù)端,由游戲客戶(hù)端和服務(wù)器完成登錄校驗(yàn)抒寂。

    /**
     * 登錄方法
     * @param activity  上下文環(huán)境
     */
    public void login(Activity activity){
        Log.v(TAG,"進(jìn)入登錄");
    }

3结啼、支付
4、注銷(xiāo)(切換賬號(hào))
5屈芜、生命周期

   /**
     * onCreate生命周期方法
     * @param activity
     */
    public void onCreate(Activity activity, Bundle savedInstanceState){
        Log.v(TAG,"進(jìn)入onCreate");
        Log.v(TAG,"onCreate執(zhí)行完成");
    }



    /**
     * onResume生命周期方法
     * @param activity    之前的塔防版署包這里是context
     */
    public void onResume(Activity activity){
        Log.v(TAG,"進(jìn)入onResume");
        Log.v(TAG,"onResume執(zhí)行完成");
    }

    /**
     * onPause生命周期方法
     * @param activity   之前的塔防版署包這里是context
     */
    public void onPause(Activity activity){
        Log.v(TAG,"進(jìn)入onPause");
        Log.v(TAG,"onPause執(zhí)行完成");
    }

    /**
     * onDestroy生命周期方法
     * @param context
     */
    public void onDestroy(Context context){
        Log.v(TAG,"進(jìn)入onDestroy");
        Log.v(TAG,"onDestroy執(zhí)行完成");
    }

    /**
     * onRestart生命周期方法
     * @param context
     */
    public void onRestart(Context context){
        Log.v(TAG,"進(jìn)入onRestart");
        Log.v(TAG,"onRestart執(zhí)行完成");
    }

    /**
     * onStart生命周期方法
     * @param context
     */
    public void onStart(Context context){
        Log.v(TAG,"進(jìn)入onStart");
        Log.v(TAG,"onStart執(zhí)行完成");
    }


    /**
     * onStop生命周期方法
     * @param context
     */
    public void onStop(Context context){
        Log.v(TAG,"進(jìn)入onStop");
        Log.v(TAG,"onStop執(zhí)行完成");
    }

6郊愧、退出

    /**
     * 退出游戲彈窗
     */
    public void exitGame(Context context){
    
    }

7、數(shù)據(jù)上報(bào)

  1. 創(chuàng)建角色
  2. 角色升級(jí)
  3. 進(jìn)入游戲
  4. 選擇區(qū)服
    這些場(chǎng)景一般是接收游戲傳遞過(guò)來(lái)的數(shù)據(jù)上報(bào)到渠道或聚合sdk中井佑,用于數(shù)據(jù)統(tǒng)計(jì)用
                Map map = new HashMap();
                map.put("uid", "123456");   //角色id
                map.put("server_id", "310");  //區(qū)服id
                map.put("server_name", "houruoyu333");  //區(qū)服名稱(chēng)
                map.put("role_id", "1225883");  //角色id
                map.put("role_name ", "houruoyu");  //角色名稱(chēng)
                map.put("role_level", "3");   //角色等級(jí)
                map.put("game_name", "");   //游戲名稱(chēng)
                map.put("role_type", "戰(zhàn)士");  //角色職業(yè)
                map.put("vip_level", "13");   //vip等級(jí)
                map.put("game_money", "999");   //玩家擁有金幣數(shù)量
                map.put("create_role_time", Long.valueOf(1616136064));  //創(chuàng)角時(shí)間
                map.put("level_up_role_time", Long.valueOf(1616136064));  //升級(jí)時(shí)間
                map.put("has_gold", "3000");     //補(bǔ)充字段

8属铁、實(shí)名認(rèn)證接口

5、聚合SDK規(guī)范

1躬翁、盡量少使用第三方開(kāi)源庫(kù)焦蘑,避免和cp引入的依賴(lài)發(fā)生沖突
2、命名規(guī)范
聚合SDK中可能會(huì)使用string盒发、color例嘱、布局文件等資源,如果和cp或渠道sdk發(fā)生重名會(huì)很麻煩宁舰,會(huì)導(dǎo)致合并資源的時(shí)候發(fā)生沖突拼卵。所以一般來(lái)說(shuō),資源等命名蛮艰,都需要加上自己獨(dú)特的前綴腋腮,避免沖突,例如:

<string name="houruoyu_app_online">登錄</string>

如果不加上 houruoyu_作為前綴的話壤蚜,很容易沖突即寡。
3、聚合SDK中使用資源索引(R.java),會(huì)導(dǎo)致合包的時(shí)候資源沖突袜刷,或者缺失資源等問(wèn)題聪富。
解決方法:所有涉及到R.java資源的引用,統(tǒng)一使用context.getResources().getIdentifier("資源名", "資源類(lèi)型", "包名");
4著蟹、回調(diào)統(tǒng)一
建議在初始化處善涨,統(tǒng)一做回調(diào)處理,例如:

    HouruoyuSDK.getInstance().init(this, new Callback(){
        @Override
        public void onInitSuccess() {
            //初始化成功
        }
        @Override
        public void onInitFailed() {
            //初始化失敗
        }
        @Override
        public void onLoginSuccess(User user) {
            //登錄成功
        }

        @Override
        public void onLoginFailed(String msg) {
            //登錄失敗
        }

        @Override
        public void onLoginCancel() {
            //登錄取消
        }
         @Override
        public void exitGame() {
            //退出游戲
        }
    });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末草则,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蟹漓,更是在濱河造成了極大的恐慌炕横,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葡粒,死亡現(xiàn)場(chǎng)離奇詭異份殿,居然都是意外死亡膜钓,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)卿嘲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)颂斜,“玉大人,你說(shuō)我怎么就攤上這事拾枣∥执” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵梅肤,是天一觀的道長(zhǎng)司蔬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)姨蝴,這世上最難降的妖魔是什么俊啼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮左医,結(jié)果婚禮上授帕,老公的妹妹穿的比我還像新娘。我一直安慰自己浮梢,他們只是感情好跛十,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著黔寇,像睡著了一般偶器。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缝裤,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天屏轰,我揣著相機(jī)與錄音,去河邊找鬼憋飞。 笑死霎苗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的榛做。 我是一名探鬼主播唁盏,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼检眯!你這毒婦竟也來(lái)了厘擂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锰瘸,失蹤者是張志新(化名)和其女友劉穎刽严,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體避凝,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舞萄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年眨补,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倒脓。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡撑螺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出崎弃,到底是詐尸還是另有隱情甘晤,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布吊履,位于F島的核電站安皱,受9級(jí)特大地震影響饿自,放射性物質(zhì)發(fā)生泄漏谷丸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一卷员、第九天 我趴在偏房一處隱蔽的房頂上張望缀踪。 院中可真熱鬧居砖,春花似錦、人聲如沸驴娃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)唇敞。三九已至蔗草,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疆柔,已是汗流浹背咒精。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旷档,地道東北人模叙。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鞋屈,于是被迫代替她去往敵國(guó)和親范咨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容