1

安卓联运SDK接入文档

[TOC]

1. 概述

本文档主要描述android应用与SDK对接的技术过程。
平台为android应用提供用户注册、登录等服务。

2. 接入流程

  1. 获取接入参数:appId appKey
  2. 应用接入
  3. 联调测试
  4. 打包上架

参数说明:

| 项 | 描述 |--
|----- |
|appId | 平台为应用分配的应用ID,字符串型
|appKey | 平台为应用分配的验签密钥,字符串型

请妥善保管好参数,切勿外泄

3. android版本兼容

支持2.3(含)以上的系统版本

4. 接入步骤

4.1 导入

libs 复制到到工程 libs/ 目录下。
res 复制到到工程 res/ 目录下。
assets 复制到到工程 assets/ 目录下。

4.2 配置AndroidManifest

在application节点下添加
注意: 一定记得要把程序入口intent-filter设置为这个MMSplashActivity"

        
        
            
            
                
                
            
        

        
        
                  
        
        
        
        
        
    

添加所需要系统权限


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

4.3 配置微信登录

wxapi文件夹放在包根目录 比如包名 com.xmen.gameroomwx 则放在com.xmen.gameroomwx.wxapi

login.png

resvalues目录下的 maimaiSetting 配置Weixin_app_id 如果为空则不采用微信登录

1_第1张图片
login.png

5.接口

5.1 初始化接口

描述: 在应用启动后调用SDK前,需要调用此接口对SDK进行初始化。
客户端接口:

  • 描述
    appId 平台为应用分配的应用ID,字符串型
    appKey 平台为应用分配的验签密钥,字符串型
    参数列表:
    描述
    appId 平台为应用分配的应用ID,字符串型
    appKey 平台为应用分配的验签密钥,字符串型
  • API:

Application生命周期调用以下接口:
onCreate方法调用初始化接口

        //初始化闪屏接口
        MaiMaiAPI.getI().initSplashDeviceInfo(MainActivity.class(需要跳转的activity的class),"APPID", "APPKEY");

activity生命周期调用以下接口:
onCreate方法调用初始化接口

        //初始化接口
        MaiMaiAPI.getI().initMaiMaiSDK(this, new InitCallBack() {
            //游戏的加载操作都在这个回调以后去加载
            @Override
            public void onInitEnd() {
                
            }
        });

onStart方法调用初始化接口

    MaiMaiAPI.getI().onStart();

onStop方法调用初始化接口

    MaiMaiAPI.getI().onStop();

onPause方法调用初始化接口

    MaiMaiAPI.getI().onPause();

onResume方法调用初始化接口

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

onDestroy方法调用初始化接口

    //如果游戏里面包含多个Activity  则不要每个都调用  在游戏退出的时候调用.用于释放SDK资源
    MaiMaiAPI.getI().onDestroy();

onActivityResult方法调用初始化接口

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

onBackPressed方法调用初始化接口

      MaiMaiAPI.getI().onBackPressed();

onRestart方法调用初始化接口

         MaiMaiAPI.getI().onRestart();

onRequestPermissionsResult方法调用初始化接口

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

5.2 登录

描述:用于玩家进行登录操作。

完整时序:

1_第2张图片
login.png

客户端接口:

  • API:
MaiMaiAPI.getI().login();
  • 参数列表:无
  • 回调:
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() {

            }
        });

服务端登录验签接口:

  • 接口地址:https://api.msdk.51738.com/open/validSign
  • 请求方式:HTTPS POST
  • 请求参数:
描述 备注
uid 用户id,由客户端接口在登录成功回调获取 long型
sign 登录签名,由客户端接口在登录成功回调获取 字符串型
  • 返回结果:验证通过返回1验证失败返回0

注意:为保证用户数据的真实性,请按上面的时序图到服务器作用户验证。

5.3 登出(重要 必看)

描述:用于玩家退出登录。以下两个方法都会调用LoginOutCallBack回调
客户端接口:

  • API:
 该方法会仅仅是退出了登录不会调用登录窗口
  该方法配合login()使用
  在setLoginOutCallBack()的回调里面把背景设置为游戏加载页面以后调用login()
 MaiMaiAPI.getI().loginOut();
 该方法会重新调用登录窗口
 MaiMaiAPI.getI().changeLogin();
  • 返回:无
  • 回调:
MaiMaiAPI.getI().setLoginOutCallBack(new LoginOutCallBack() {
        @Override
        public void onLoginOut() {
            该回调比较重要 包括悬浮窗里也有切换帐号的选项 必须监听
            把背景设置为游戏加载页面以后调用login()
        }
    });

** 注:游戏或SDK在切换账号时,需要游戏方在此回调中进行游戏退出的逻辑处理 **

5.4 支付

描述:用于玩家进行应用内的付费支付
完整时序:

1_第3张图片
pay.png

客户端接口:

  • API:
MaiMaiAPI.getI().pay(String subject, double money, String extraInfo, String serverId, String billNo);
  • 描述
    subject 商品信息,不可为空
    money 支付金额(单位:元,精确到小数点后2位),不可为空
    extraInfo 扩展参数(由客户端支付调用时传入,原样传回),可为空
    serverId 服务器标识(由客户端支付调用时传入,原样传回),可为空
    billNo 游戏订单号

    参数说明:

    描述
    subject 商品信息,不可为空
    money 支付金额(单位:元,精确到小数点后2位),不可为空
    extraInfo 扩展参数(由客户端支付调用时传入,原样传回),可为空
    serverId 服务器标识(由客户端支付调用时传入,原样传回),可为空
    billNo 游戏订单号
  • 回调:

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

            }

            @Override
            public void onFailure() {

            }

            @Override
            public void onCancel() {

            }
            //针对微信支付无法获取到用户的支付状态会调用该方法
            @Override
            public void unknown() {
                //可以在这里向服务器查询是否已经支付成功
            }
        });

服务端回调接口:

  • 回调地址:由应用开发方将充值回调地址填写至后台中
  • 回调方式:HTTP POST (表单POST,非JSON或流方式传入回调参数)
  • 回调参数列表:
描述 备注
tradeNo 订单号 字符串型
uid 玩家标识 long型
orderNo 应用方订单号 字符串型
amount 成功支付金额 浮点型(单位:元)
extraInfo 应用方扩展参数 字符串型(由客户端支付调用时传入,原样传回)
serverId 服务器标识 字符串型(由客户端支付调用时传入,原样传回)
sign 签名参数 字符串型(签名算法见下段)
  • 回调结果:若应用开发方处理成功,则返回ok;若失败,则返回失败的具体错误消息内容
  • sign参数算法:
md5(tradeNo + orderNo + uid + amount + appKey)
转小写
  • sign参数示例:
先置条件:
appKey: 68234a4d18494ffda6873e53be5a7ec3
tradeNo:201703151623041003921
orderNo:6d34c508ad7f4471b08108399c5b5a8d
uid:2016221
amount:10.00
组合后的字符串:2017031516230410039216d34c508ad7f4471b08108399c5b5a8d201622110.0068234a4d18494ffda6873e53be5a7ec3
MD5加密转小写后:8bdad814e000a43d5c8f32093f947cb9
即sign的值为8bdad814e000a43d5c8f32093f947cb9 

5.5 绑定手机号码

描述:用于玩家的手机号码绑定

客户端接口:

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

            }

            @Override
            public void onBindPhoneFailure() {

            }
        });

5.6 客服中心

描述:用于玩家打开客服中心,联系客服。
客户端接口:

  • API
MaiMaiAPI.getI().serviceHome();
  • 回调:无

6. 部分游戏的兼容处理

6.1 黑屏处理

描述:针对部分游戏 在切换后台的时候 在切换回来 屏幕会黑屏
客户端接口:

  • API
在调用完initMaiMaiSDK() 以后执行以下方法
MaiMaiAPI.getI().disposeBlank();
  • 回调:无

6.2 悬浮窗处理

描述:针对部分游戏 在游戏页面内不应该出现悬浮窗 可以调用隐藏显示API
客户端接口:

  • API
    显示
    public void showFloatView() 
    隐藏
    public void hideFloatView()

6.3 application创建方法

描述:针对部分游戏前端,不会创建application
1.创建一个类继承application
2.在AndroidManifest里的application节点配置name属性 引用刚刚配置的application

6.4 闪屏完还没进入游戏界面就闪退

1.如果闪屏完会崩溃, 请检查一下是不是AndroidManifest里没有给游戏配置activity,如果没有可以复制下面代码

android:name="游戏的activity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="landscape">

2.检查初始化接口
Application生命周期调用以下接口:
onCreate方法调用初始化接口

        //检查初始化闪屏接口的时候第一个参数是不是游戏的activity的class
        MaiMaiAPI.getI().initSplashDeviceInfo(MainActivity.class(需要跳转的activity的class),"APPID", "APPKEY");

7. 注意事项

  • 如果libs的依赖库有冲突请优先使用本SDK里的Libs否则可能会出现问题,或者联系技术

你可能感兴趣的:(1)