1

安卓聯(lián)運(yùn)SDK接入文檔

[TOC]

1. 概述

本文檔主要描述android應(yīng)用與SDK對(duì)接的技術(shù)過(guò)程。
平臺(tái)為android應(yīng)用提供用戶注冊(cè)、登錄等服務(wù)。

2. 接入流程

  1. 獲取接入?yún)?shù):appId appKey
  2. 應(yīng)用接入
  3. 聯(lián)調(diào)測(cè)試
  4. 打包上架

參數(shù)說(shuō)明:

| 項(xiàng) | 描述 |--
|----- |
|appId | 平臺(tái)為應(yīng)用分配的應(yīng)用ID,字符串型
|appKey | 平臺(tái)為應(yīng)用分配的驗(yàn)簽密鑰,字符串型

請(qǐng)妥善保管好參數(shù)已卷,切勿外泄梧田。

3. android版本兼容

支持2.3(含)以上的系統(tǒng)版本

4. 接入步驟

4.1 導(dǎo)入

libs 復(fù)制到到工程 libs/ 目錄下。
res 復(fù)制到到工程 res/ 目錄下。
assets 復(fù)制到到工程 assets/ 目錄下裁眯。

4.2 配置AndroidManifest

在application節(jié)點(diǎn)下添加
<font color=#ff0000>注意: 一定記得要把程序入口intent-filter設(shè)置為這個(gè)MMSplashActivity"
</font>

        <!--  閃屏  *注意* 一定記得要把程序入口設(shè)置為這個(gè) -->
        <activity
            android:name="com.maimaicy.sdk.ui.MMSplashActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
            <!--  *注意* 一定記得要把程序入口設(shè)置為這個(gè) </font>   -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <!--微信配置  沒(méi)接的可以不用復(fù)制-->
        <activity android:name=".wxapi.WXEntryActivity" android:exported="true"
                  android:launchMode="singleTop"
                  android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
                  
        <!--阿里支付SDK   沒(méi)接的可以不用復(fù)制-->
        <activity
            android:name="com.alipay.sdk.app.H5PayActivity"
            android:configChanges="orientation|keyboardHidden|navigation"
            android:exported="false"
            android:screenOrientation="behind" >
        </activity>
        <activity
            android:name="com.alipay.sdk.auth.AuthActivity"
            android:configChanges="orientation|keyboardHidden|navigation"
            android:exported="false"
            android:screenOrientation="behind" >
        </activity>
    <!--阿里SDK-->

添加所需要系統(tǒng)權(quán)限

<supports-screens android:anyDensity="true"
                      android:largeScreens="true" android:normalScreens="true"
                      android:resizeable="true" android:smallScreens="true"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.webkit.permission.PLUGIN"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CALL_PHONE"/>

4.3 配置微信登錄

wxapi文件夾放在包根目錄 比如包名 com.xmen.gameroomwx 則放在com.xmen.gameroomwx.wxapi

login.png

resvalues目錄下的 maimaiSetting 配置Weixin_app_id 如果為空則不采用微信登錄

login.png

5.接口

5.1 初始化接口

描述: 在應(yīng)用啟動(dòng)后調(diào)用SDK前鹉梨,需要調(diào)用此接口對(duì)SDK進(jìn)行初始化。
客戶端接口:

  • 項(xiàng) 描述
    appId 平臺(tái)為應(yīng)用分配的應(yīng)用ID穿稳,字符串型
    appKey 平臺(tái)為應(yīng)用分配的驗(yàn)簽密鑰存皂,字符串型
    參數(shù)列表:
    項(xiàng) 描述
    appId 平臺(tái)為應(yīng)用分配的應(yīng)用ID,字符串型
    appKey 平臺(tái)為應(yīng)用分配的驗(yàn)簽密鑰逢艘,字符串型
  • API:

Application生命周期調(diào)用以下接口:
onCreate方法調(diào)用初始化接口

        //初始化閃屏接口
        MaiMaiAPI.getI().initSplashDeviceInfo(MainActivity.class(需要跳轉(zhuǎn)的activity的class),"APPID", "APPKEY");

activity生命周期調(diào)用以下接口:
onCreate方法調(diào)用初始化接口

        //初始化接口
        MaiMaiAPI.getI().initMaiMaiSDK(this, new InitCallBack() {
            //游戲的加載操作都在這個(gè)回調(diào)以后去加載
            @Override
            public void onInitEnd() {
                
            }
        });

onStart方法調(diào)用初始化接口

    MaiMaiAPI.getI().onStart();

onStop方法調(diào)用初始化接口

    MaiMaiAPI.getI().onStop();

onPause方法調(diào)用初始化接口

    MaiMaiAPI.getI().onPause();

onResume方法調(diào)用初始化接口

    MaiMaiAPI.getI().onResume(Activity activity);

onDestroy方法調(diào)用初始化接口

    //如果游戲里面包含多個(gè)Activity  則不要每個(gè)都調(diào)用  在游戲退出的時(shí)候調(diào)用.用于釋放SDK資源
    MaiMaiAPI.getI().onDestroy();

onActivityResult方法調(diào)用初始化接口

    MaiMaiAPI.getI().onActivityResult(requestCode, resultCode, data)

onBackPressed方法調(diào)用初始化接口

      MaiMaiAPI.getI().onBackPressed();

onRestart方法調(diào)用初始化接口

         MaiMaiAPI.getI().onRestart();

onRequestPermissionsResult方法調(diào)用初始化接口

        MaiMaiAPI.getI().onRequestPermissionsResult(requestCode, permissions, grantResults);;

5.2 登錄

描述:用于玩家進(jìn)行登錄操作旦袋。

完整時(shí)序:

login.png

客戶端接口:

  • API:
MaiMaiAPI.getI().login();
  • 參數(shù)列表:無(wú)
  • 回調(diào):
MaiMaiAPI.getI().setLoginCallBack(new LoginCallBack() {
            @Override
            public void onSuccess(User user) {
                String uid = user.getUid();
                String sign = user.getSign();
                boolean isBindPhone = user.isBindPhone();
            }

            @Override
            public void onFailure(String msg) {
            }

            @Override
            public void onCancel() {

            }
        });

服務(wù)端登錄驗(yàn)簽接口:

項(xiàng) 描述 備注
uid 用戶id,由客戶端接口在登錄成功回調(diào)獲取 long型
sign 登錄簽名它改,由客戶端接口在登錄成功回調(diào)獲取 字符串型
  • 返回結(jié)果:驗(yàn)證通過(guò)返回1疤孕,驗(yàn)證失敗返回0

<font color=#ff0000>注意:為保證用戶數(shù)據(jù)的真實(shí)性,請(qǐng)按上面的時(shí)序圖到服務(wù)器作用戶驗(yàn)證央拖。</font>

5.3 登出(重要 必看)

描述:用于玩家退出登錄祭阀。以下兩個(gè)方法都會(huì)調(diào)用LoginOutCallBack回調(diào)
客戶端接口:

  • API:
 該方法會(huì)僅僅是退出了登錄不會(huì)調(diào)用登錄窗口
  該方法配合login()使用
  在setLoginOutCallBack()的回調(diào)里面把背景設(shè)置為游戲加載頁(yè)面以后調(diào)用login()
 MaiMaiAPI.getI().loginOut();
 該方法會(huì)重新調(diào)用登錄窗口
 MaiMaiAPI.getI().changeLogin();
  • 返回:無(wú)
  • 回調(diào):
MaiMaiAPI.getI().setLoginOutCallBack(new LoginOutCallBack() {
        @Override
        public void onLoginOut() {
            該回調(diào)比較重要 包括懸浮窗里也有切換帳號(hào)的選項(xiàng) 必須監(jiān)聽(tīng)
            把背景設(shè)置為游戲加載頁(yè)面以后調(diào)用login()
        }
    });

** 注:游戲或SDK在切換賬號(hào)時(shí),需要游戲方在此回調(diào)中進(jìn)行游戲退出的邏輯處理 **

5.4 支付

描述:用于玩家進(jìn)行應(yīng)用內(nèi)的付費(fèi)支付
完整時(shí)序:

pay.png

客戶端接口:

  • API:
MaiMaiAPI.getI().pay(String subject, double money, String extraInfo, String serverId, String billNo);
  • 項(xiàng) 描述
    subject 商品信息鲜戒,不可為空
    money 支付金額(單位:元专控,精確到小數(shù)點(diǎn)后2位),不可為空
    extraInfo 擴(kuò)展參數(shù)(由客戶端支付調(diào)用時(shí)傳入遏餐,原樣傳回)伦腐,可為空
    serverId 服務(wù)器標(biāo)識(shí)(由客戶端支付調(diào)用時(shí)傳入,原樣傳回)境输,可為空
    billNo 游戲訂單號(hào)

    參數(shù)說(shuō)明:

    項(xiàng) 描述
    subject 商品信息蔗牡,不可為空
    money 支付金額(單位:元,精確到小數(shù)點(diǎn)后2位)嗅剖,不可為空
    extraInfo 擴(kuò)展參數(shù)(由客戶端支付調(diào)用時(shí)傳入辩越,原樣傳回),可為空
    serverId 服務(wù)器標(biāo)識(shí)(由客戶端支付調(diào)用時(shí)傳入信粮,原樣傳回)黔攒,可為空
    billNo 游戲訂單號(hào)
  • 回調(diào):

MaiMaiAPI.getI().setPayCallBack(new PayCallBack() {
            @Override
            public void onSuccess() {

            }

            @Override
            public void onFailure() {

            }

            @Override
            public void onCancel() {

            }
            //針對(duì)微信支付無(wú)法獲取到用戶的支付狀態(tài)會(huì)調(diào)用該方法
            @Override
            public void unknown() {
                //可以在這里向服務(wù)器查詢是否已經(jīng)支付成功
            }
        });

服務(wù)端回調(diào)接口:

  • 回調(diào)地址:由應(yīng)用開(kāi)發(fā)方將充值回調(diào)地址填寫(xiě)至后臺(tái)中
  • 回調(diào)方式:HTTP POST (表單POST,非JSON或流方式傳入回調(diào)參數(shù))
  • 回調(diào)參數(shù)列表:
項(xiàng) 描述 備注
tradeNo 訂單號(hào) 字符串型
uid 玩家標(biāo)識(shí) long型
orderNo 應(yīng)用方訂單號(hào) 字符串型
amount 成功支付金額 浮點(diǎn)型(單位:元)
extraInfo 應(yīng)用方擴(kuò)展參數(shù) 字符串型(由客戶端支付調(diào)用時(shí)傳入强缘,原樣傳回)
serverId 服務(wù)器標(biāo)識(shí) 字符串型(由客戶端支付調(diào)用時(shí)傳入督惰,原樣傳回)
sign 簽名參數(shù) 字符串型(簽名算法見(jiàn)下段)
  • 回調(diào)結(jié)果:若應(yīng)用開(kāi)發(fā)方處理成功,則返回ok旅掂;若失敗赏胚,則返回失敗的具體錯(cuò)誤消息內(nèi)容
  • sign參數(shù)算法:
md5(tradeNo + orderNo + uid + amount + appKey)
轉(zhuǎn)小寫(xiě)
  • sign參數(shù)示例:
先置條件:
appKey: 68234a4d18494ffda6873e53be5a7ec3
tradeNo:201703151623041003921
orderNo:6d34c508ad7f4471b08108399c5b5a8d
uid:2016221
amount:10.00
組合后的字符串:2017031516230410039216d34c508ad7f4471b08108399c5b5a8d201622110.0068234a4d18494ffda6873e53be5a7ec3
MD5加密轉(zhuǎn)小寫(xiě)后:8bdad814e000a43d5c8f32093f947cb9
即sign的值為8bdad814e000a43d5c8f32093f947cb9 

5.5 綁定手機(jī)號(hào)碼

描述:用于玩家的手機(jī)號(hào)碼綁定

客戶端接口:

  • API:
MaiMaiAPI.getI().bindPhon();
  • 回調(diào):
MaiMaiAPI.getI().setBindPhoneCallBack(new BindPhoneCallBack() {
            @Override
            public void onBindPhoneSuccess() {

            }

            @Override
            public void onBindPhoneFailure() {

            }
        });

5.6 客服中心

描述:用于玩家打開(kāi)客服中心,聯(lián)系客服商虐。
客戶端接口:

  • API
MaiMaiAPI.getI().serviceHome();
  • 回調(diào):無(wú)

6. 部分游戲的兼容處理

6.1 黑屏處理

描述:針對(duì)部分游戲 在切換后臺(tái)的時(shí)候 在切換回來(lái) 屏幕會(huì)黑屏
客戶端接口:

  • API
在調(diào)用完initMaiMaiSDK() 以后執(zhí)行以下方法
MaiMaiAPI.getI().disposeBlank();
  • 回調(diào):無(wú)

6.2 懸浮窗處理

描述:針對(duì)部分游戲 在游戲頁(yè)面內(nèi)不應(yīng)該出現(xiàn)懸浮窗 可以調(diào)用隱藏顯示API
客戶端接口:

  • API
    顯示
    public void showFloatView() 
    隱藏
    public void hideFloatView()

6.3 application創(chuàng)建方法

描述:針對(duì)部分游戲前端,不會(huì)創(chuàng)建application
1.創(chuàng)建一個(gè)類繼承application
2.在AndroidManifest里的application節(jié)點(diǎn)配置name屬性 引用剛剛配置的application

6.4 閃屏完還沒(méi)進(jìn)入游戲界面就閃退

1.如果閃屏完會(huì)崩潰, 請(qǐng)檢查一下是不是AndroidManifest里沒(méi)有給游戲配置activity,如果沒(méi)有可以復(fù)制下面代碼
?
<activity
android:name="游戲的activity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="landscape">
</activity>

2.檢查初始化接口
Application生命周期調(diào)用以下接口:
onCreate方法調(diào)用初始化接口

        //檢查初始化閃屏接口的時(shí)候第一個(gè)參數(shù)是不是游戲的activity的class
        MaiMaiAPI.getI().initSplashDeviceInfo(MainActivity.class(需要跳轉(zhuǎn)的activity的class),"APPID", "APPKEY");

7. 注意事項(xiàng)

  • 如果libs的依賴庫(kù)有沖突請(qǐng)優(yōu)先使用本SDK里的Libs否則可能會(huì)出現(xiàn)問(wèn)題,或者聯(lián)系技術(shù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末觉阅,一起剝皮案震驚了整個(gè)濱河市崖疤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌典勇,老刑警劉巖劫哼,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異割笙,居然都是意外死亡权烧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)伤溉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)般码,“玉大人,你說(shuō)我怎么就攤上這事谈火〕扪” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵糯耍,是天一觀的道長(zhǎng)扔字。 經(jīng)常有香客問(wèn)我,道長(zhǎng)温技,這世上最難降的妖魔是什么革为? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮舵鳞,結(jié)果婚禮上震檩,老公的妹妹穿的比我還像新娘。我一直安慰自己蜓堕,他們只是感情好抛虏,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著套才,像睡著了一般迂猴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上背伴,一...
    開(kāi)封第一講書(shū)人閱讀 52,736評(píng)論 1 312
  • 那天沸毁,我揣著相機(jī)與錄音,去河邊找鬼傻寂。 笑死息尺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疾掰。 我是一名探鬼主播搂誉,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼静檬!你這毒婦竟也來(lái)了炭懊?” 一聲冷哼從身側(cè)響起浪汪,我...
    開(kāi)封第一講書(shū)人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凛虽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體广恢,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凯旋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钉迷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片至非。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖糠聪,靈堂內(nèi)的尸體忽然破棺而出荒椭,到底是詐尸還是另有隱情,我是刑警寧澤舰蟆,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布趣惠,位于F島的核電站,受9級(jí)特大地震影響身害,放射性物質(zhì)發(fā)生泄漏味悄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一塌鸯、第九天 我趴在偏房一處隱蔽的房頂上張望侍瑟。 院中可真熱鬧,春花似錦丙猬、人聲如沸涨颜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)庭瑰。三九已至,卻和暖如春袜腥,著一層夾襖步出監(jiān)牢的瞬間见擦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工羹令, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鲤屡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓福侈,卻偏偏與公主長(zhǎng)得像酒来,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肪凛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

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