游戏sdk接入教程:uc(阿里游戏)接入

上文中已介绍了环境与软件的安装配置(https://my.oschina.net/u/3024661/blog/881141),之后我们就可以开始学习接入渠道了,

UC已和豌斗夹渠道合并,改名叫阿里游戏

我这边演示用DEMO的下载的为融合版,看一下下载下来后有些什么东西吧

184816_6ttl_3024661.png

具体里面的东西如何使用,我们晚点正说

 

在接入之前,需先在渠道后台创建游戏,获取一些接入参数。

客户端所需要参数包括:cpId、gameId、serverId。参数基本是初始化时所需要传入的参数。

184829_CY2I_3024661.png

 

准备工作做为,正式开始接入,首先肯定是把所需要的资源如JAR包之类的复制到我的工程中去。

我这边的接入环境是Eclipse

 

那首先我们得先创建一个demo工程,打开我们的Eclipse,新建一个工程,名为demo

184848_wMQS_3024661.png

184905_u0Mt_3024661.png

184918_T0iU_3024661.png

184930_X7wS_3024661.png

184940_1LF2_3024661.png

184955_vMit_3024661.png

创建完成之后如下图,会发现我们左侧栏会有两个新工程

185011_j1PV_3024661.png

很明显现在是有问题的,有两个大大的感叹号,那有些东西我们是不需要的,就直接大胆的delete掉 ,先删除appcompat v7 选中appcompat v7按delete键,记得打勾如下图红色标记处,然后按确定


 

现在我们发现打叉叉的地方有这几个地方

185307_n9Cc_3024661.png

首先我们去values里面把错误的地方删除

185318_aAaQ_3024661.png

之后我们发现错误的地方只有一处了

185347_U9Sb_3024661.png

我们双击MainActivity.java打开这个类


然后我们把除了第一行外所有的代码都删除,之后我会把整个类的代码写在后面,大家只需要把整个类的代码复制进这个类里就行

185511_L1Iq_3024661.png

185523_P5Ed_3024661.png

然后我们clean我们的工程,选中demo

185541_8Tth_3024661.png

185557_E1UT_3024661.png

然后把下图中红框里的三个目录都delete删除

185627_VliT_3024661.png

185645_Uhkm_3024661.png

同样重复刚刚的步骤,clean我们的工程

同样打开下图中报错的文件

185718_WLs5_3024661.png

删除文字下方带红色波浪线的

185736_Ic1A_3024661.png

185755_It8B_3024661.png185806_asm1_3024661.png

再次clean一下我们的demo工程后发现没有地方再报错了

185818_BaN9_3024661.png

打开我们下载好解压出来的文档目录找到所需要依赖的JAR包

185836_Cx63_3024661.png

红框所示就是我们Eclipse所需要的jar包了。

把alipay.jar复制到我们工程的libs目录下就行。

185911_9kWa_3024661.png

 

.arr是studio中用的类似于Eclipse的.jar,但其中整合了其他资源,所以,我们需要把arr文件的后缀名改成rar或者zip把的解压出来获取我们需要的资源文件。

185927_Bnnr_3024661.png

185937_hotp_3024661.png

然后解压

解压出来的目录格式:

185951_alSo_3024661.png

190010_LNUn_3024661.png

其中,我们需要是上图中两个红框中的。

把ucgamesdk.jar复制到我们工程的libs目录下

把assets目录下的所有文件复制到我们工程的assets目录下。

190023_VfP0_3024661.png

至此,我们已经把所有需要的东西都复制到了我们的工程中,clean 一下我们的demo工程,接下来个上代码了。

 

首先我们打开我们工程的AndroidManifest.xml文件。


然后复制以下代码

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.demo"

    android:versionCode="1"

    android:versionName="1.0" >



    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="18" />



    <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.ACCESS_NETWORK_STATE" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <uses-permission android:name="android.permission.SEND_SMS" />

    <uses-permission android:name="android.permission.GET_TASKS" />

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <uses-permission android:name="android.permission.RECORD_AUDIO" />

    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

    <uses-permission android:name="android.permission.USE_CREDENTIALS" />

    <uses-permission android:name="android.permission.READ_LOGS" />

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />



    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name" >

        <activity

            android:name=".MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />



                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activity

            android:name="cn.uc.gamesdk.activity.ProxyActivity"

            android:configChanges="keyboardHidden|orientation|screenSize"

            android:label="@string/app_name"

            android:theme="@android:style/Theme.Translucent.NoTitleBar"

            android:windowSoftInputMode="adjustResize" >

            <intent-filter>

                <action android:name="cn.uc.gamesdk.sdkweb" />



                <category android:name="android.intent.category.DEFAULT" />

            </intent-filter>

        </activity>

        <!-- alipay sdk begin -->

        <activity

            android:name="com.alipay.sdk.app.H5PayActivity"

            android:configChanges="orientation|keyboardHidden|navigation|screenSize"

            android:exported="false"

            android:screenOrientation="behind" >

        </activity>

        <activity

            android:name="com.alipay.sdk.auth.AuthActivity"

            android:configChanges="orientation|keyboardHidden|navigation|screenSize"

            android:exported="false"

            android:screenOrientation="behind" >

        </activity>

        <!-- alipay sdk end -->

        <!-- 游戏的横竖屏配置 -->

        <meta-data

            android:name="ali_screen_orientation"

            android:value="landscape" />

    </application>



</manifest>


然后到我们demo工程的AndroidManifest.xml全选替换粘贴

190147_ZjTZ_3024661.png

190200_MJYk_3024661.png

以上AndroidManifest.xml修改好了。

做完以上步骤,接下来,我们开始接入SDK的接口。

首先打开我们的MainActivity.java

190212_GKjj_3024661.png

刚刚我让大家把这个文件里的代码都删了,现在应该除了第一行是没有东西的,然后把下面的代码复制进去,注意别把第一行的代码覆盖了。

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import cn.uc.gamesdk.UCGameSdk;

import cn.uc.gamesdk.even.SDKEventKey;

import cn.uc.gamesdk.even.SDKEventReceiver;

import cn.uc.gamesdk.even.Subscribe;

import cn.uc.gamesdk.exception.AliLackActivityException;

import cn.uc.gamesdk.exception.AliNotInitException;

import cn.uc.gamesdk.open.GameParamInfo;

import cn.uc.gamesdk.open.OrderInfo;

import cn.uc.gamesdk.open.UCLogLevel;

import cn.uc.gamesdk.open.UCOrientation;

import cn.uc.gamesdk.param.SDKParamKey;

import cn.uc.gamesdk.param.SDKParams;



public class MainActivity extends Activity {



       final static String TAG = "demo";

       UCGameSdk sdk;

       int cpId = 0;

       int gameId = 0;

       int serverId = 0;



       @Override

       protected void onCreate(Bundle savedInstanceState) {

              // TODO Auto-generated method stub

              super.onCreate(savedInstanceState);

              setContentView(R.layout.activity_main);

              UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver);

       }



       @Override

       protected void onDestroy() {

              // TODO Auto-generated method stub

              super.onDestroy();

              UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver);

              sdk = UCGameSdk.defaultSdk();

       }



       private void init() {

              // TODO Auto-generated method stub

              GameParamInfo gameParamInfo = new GameParamInfo();

              gameParamInfo.setCpId(cpId);// 上文提到的游戏参数 参数类型int

              gameParamInfo.setGameId(gameId);// 上文提到的游戏参数 参数类型int

              gameParamInfo.setServerId(serverId);// 上文提到的游戏参数 参数类型int

              // 设置是否支持查询充值历史和显示切换账号功能,

              // 如果不设置,默认具有查询充值历史记录,不具有切换账户功能

              gameParamInfo.setEnablePayHistory(true);// 开启查询充值历史功能

              gameParamInfo.setEnableUserChange(true);// 开启账号切换功能

              // 设置SDK屏幕方向

              // LANDSCAPE:横屏,横屏游戏必须设置为横屏,PORTRAIT:竖屏

              gameParamInfo.setOrientation(UCOrientation.PORTRAIT);



              SDKParams sdkParams = new SDKParams();

              sdkParams.put(SDKParamKey.LOG_LEVEL, UCLogLevel.DEBUG);// 日志等级

              sdkParams.put(SDKParamKey.GAME_PARAMS, gameParamInfo);

              // FIXME always debug

              // 是否打开调试模式。

              // 在为true的时候,会连接到联调测试环境(sdk.test4.9game.cn),

              // 当为false的时候则会连接到正式环境(sdk.g.9game.cn)。

              sdkParams.put(SDKParamKey.DEBUG_MODE, false);



              try {

                     sdk.initSdk(MainActivity.this, sdkParams);

              } catch (AliLackActivityException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }



       private void login() {

              try {

                     sdk.login(MainActivity.this, null);

              } catch (AliLackActivityException e) {

                     // TODO Auto-generated catch block activity为空,异常处理

                     e.printStackTrace();

              } catch (AliNotInitException e) {

                     // TODO Auto-generated catch block 未初始化,异常处理

                     e.printStackTrace();

              }

       }



       private void pay() {

              SDKParams sdkParams = new SDKParams();

              sdkParams.put(SDKParamKey.CALLBACK_INFO, "{\"test\":true}");

              sdkParams.put(SDKParamKey.SERVER_ID, "1");

              sdkParams.put(SDKParamKey.ROLE_ID, "AAA");

              sdkParams.put(SDKParamKey.ROLE_NAME, "BBB");

              sdkParams.put(SDKParamKey.GRADE, "grade1");

              sdkParams.put(SDKParamKey.NOTIFY_URL, "");

              sdkParams.put(SDKParamKey.AMOUNT, "2.33");

              sdkParams.put(SDKParamKey.CP_ORDER_ID, "20160000101001");

              sdkParams.put(SDKParamKey.ACCOUNT_ID, "123");

              sdkParams.put(SDKParamKey.SIGN_TYPE, "MD5");

              sdkParams.put(SDKParamKey.SIGN, "游戏服务器根据以上信息签名后的结果");

              // 以上字段的值都需要由游戏服务器生成



              try {

                     UCGameSdk.defaultSdk().pay(MainActivity.this, sdkParams);

              } catch (IllegalArgumentException e) {

                     // TODO Auto-generated catch block 参数错

                     e.printStackTrace();

              } catch (AliLackActivityException e) {

                     // TODO Auto-generated catch block activity null

                     e.printStackTrace();

              } catch (AliNotInitException e) {

                     // TODO Auto-generated catch block 未初始化

                     e.printStackTrace();

              }

       }



       private void sendUserInfo() {

              SDKParams sdkParams = new SDKParams();

              sdkParams.put(SDKParamKey.STRING_ROLE_ID, "roleId");

              sdkParams.put(SDKParamKey.STRING_ROLE_NAME, "roleName");

              sdkParams.put(SDKParamKey.LONG_ROLE_LEVEL, 1);

              sdkParams.put(SDKParamKey.STRING_ZONE_ID, "zoneId");

              sdkParams.put(SDKParamKey.STRING_ZONE_NAME, "serverId");

              sdkParams.put(SDKParamKey.LONG_ROLE_CTIME, 1456397360);

              try {

                     sdk.submitRoleData(MainActivity.this, sdkParams);

              } catch (IllegalArgumentException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (AliNotInitException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (AliLackActivityException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

      

       private void logout(){

              try {

                     sdk.logout(MainActivity.this, null);

              } catch (AliLackActivityException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (AliNotInitException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }



       private void exit() {

              try {

                     sdk.exit(MainActivity.this, null);

              } catch (AliLackActivityException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (AliNotInitException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }





       SDKEventReceiver eventReceiver = new SDKEventReceiver() {

              @Subscribe(event = SDKEventKey.ON_INIT_SUCC)

              private void onInitSucc() {

                     // 初始化成功

                     Log.d(TAG, "init success");

              }



              @Subscribe(event = SDKEventKey.ON_INIT_FAILED)

              private void onInitFailed(String data) {

                     // 初始化失败

                     Log.d(TAG, "init failed:" + data);

              }



              @Subscribe(event = SDKEventKey.ON_LOGIN_SUCC)

              private void onLoginSucc(String sid) {

                     // 登录成功

                     // sid为用户的登录会话标识,用于给游戏服务器校验用户登录状态使用。

                     Log.d(TAG, "login success:sid:" + sid);

              }



              @Subscribe(event = SDKEventKey.ON_LOGIN_FAILED)

              private void onLoginFailed(String desc) {

                     // 登录失败

                     Log.d(TAG, "login failed:" + desc);

              }



              @Subscribe(event = SDKEventKey.ON_LOGOUT_SUCC)

              private void onLogoutSucc() {

                     // 登出成功

                     Log.d(TAG, "logout success");

              }



              @Subscribe(event = SDKEventKey.ON_LOGOUT_FAILED)

              private void onLogoutFailed() {

                     // 登出失败

                     Log.d(TAG, "logout failed");

              }



              @Subscribe(event = SDKEventKey.ON_EXIT_SUCC)

              private void onExit(String desc) {

                     // 退出游戏

                     Log.d(TAG, "exit:" + desc);



                     MainActivity.this.finish();

                     System.exit(0);

              }



              @Subscribe(event = SDKEventKey.ON_EXIT_CANCELED)

              private void onExitCanceled(String desc) {

                     // 取消退出

                     Log.d(TAG, "exit cancel:" + desc);

              }



              @Subscribe(event = SDKEventKey.ON_CREATE_ORDER_SUCC)

              private void onCreateOrderSucc(OrderInfo orderInfo) {

                     // 支付成功

                     if (orderInfo != null) {

                            String txt = orderInfo.getOrderAmount() + ","

                                          + orderInfo.getOrderId() + "," + orderInfo.getPayWay();

                            Log.d(TAG, "充值成功: " + txt + "\n");

                     }

                     Log.i(TAG, "pay succ");

              }



              @Subscribe(event = SDKEventKey.ON_PAY_USER_EXIT)

              private void onPayUserExit(OrderInfo orderInfo) {

                     // 支付失败

                     if (orderInfo != null) {

                            String txt = orderInfo.getOrderAmount() + ","

                                          + orderInfo.getOrderId() + "," + orderInfo.getPayWay();

                            Log.d(TAG, "充值失败: " + txt + "\n");

                     }

                     Log.i(TAG, "pay fail");

              }



       };



}


至此我们就把所有UC上线所需的接口完成了,添加UI并添加相应事件调用相应接口后,就是一个最简单的demo了

 

如果想要了解具体的接口作用,和相应参数的说明,请继续阅读以下内容,或查看官方文档

 

第一种步创建监听:

   SDKEventReceiver eventReceiver = new SDKEventReceiver() {

      @Subscribe(event = SDKEventKey.ON_INIT_SUCC)

      private void onInitSucc() {

         // 初始化成功

         Log.d(tag, "init success");

      }



      @Subscribe(event = SDKEventKey.ON_INIT_FAILED)

      private void onInitFailed(String data) {

         // 初始化失败

         Log.d(tag, "init failed:" + data);

      }



      @Subscribe(event = SDKEventKey.ON_LOGIN_SUCC)

      private void onLoginSucc(String sid) {

         // 登录成功

         // sid为用户的登录会话标识,用于给游戏服务器校验用户登录状态使用。

         Log.d(tag, "login success:sid:" + sid);

      }



      @Subscribe(event = SDKEventKey.ON_LOGIN_FAILED)

      private void onLoginFailed(String desc) {

         // 登录失败

         Log.d(tag, "login failed:" + desc);

      }



      @Subscribe(event = SDKEventKey.ON_LOGOUT_SUCC)

      private void onLogoutSucc() {

         // 登出成功

         Log.d(tag, "logout success");

      }



      @Subscribe(event = SDKEventKey.ON_LOGOUT_FAILED)

      private void onLogoutFailed() {

         // 登出失败

         Log.d(tag, "logout failed");

      }



      @Subscribe(event = SDKEventKey.ON_EXIT_SUCC)

      private void onExit(String desc) {

         // 退出游戏

         Log.d(tag, "exit:" + desc);



         MainActivity.this.finish();

         System.exit(0);

      }



      @Subscribe(event = SDKEventKey.ON_EXIT_CANCELED)

      private void onExitCanceled(String desc) {

         // 取消退出

         Log.d(tag, "exit cancel:" + desc);

      }

     

      @Subscribe(event = SDKEventKey.ON_CREATE_ORDER_SUCC)

        private void onCreateOrderSucc(OrderInfo orderInfo) {

            // 支付成功

            if (orderInfo != null) {

                String txt = orderInfo.getOrderAmount() + ","

+ orderInfo.getOrderId() + "," + orderInfo.getPayWay();

                Log.d(tag, "充值成功: " + txt + "\n");

            }

            Log.i(tag, "pay succ");

        }



        @Subscribe(event = SDKEventKey.ON_PAY_USER_EXIT)

        private void onPayUserExit(OrderInfo orderInfo) {

// 支付失败

            if (orderInfo != null) {

                String txt = orderInfo.getOrderAmount() + ","

+ orderInfo.getOrderId() + "," + orderInfo.getPayWay();

                Log.d(tag, "充值失败: " + txt + "\n");

            }

            Log.i(tag, "pay fail");

        }



   };

监听创建完成后,需要在Activity onCreate中注册,并在Activity onDestroy中注销:

 

注册:UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver);

   @Override

   protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver);

   }

 

注销:UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver);

   @Override

   protected void onDestroy() {

      // TODO Auto-generated method stub

      super.onDestroy();

      UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver);

   }

 

这样在相应操作之后,UC的SDK就能给你回调了,在相应回调方法内,做自己游戏相应操作就行

 

第二步初始化:

首先定义一个全局变量:UCGameSdk sdk;

并在Activity onCreate中获取对象:sdk = UCGameSdk.defaultSdk();

之后就在Activity onCreate中调用UC的初始化接口:

   private void init() {

      // TODO Auto-generated method stub

      GameParamInfo gameParamInfo = new GameParamInfo();

        gameParamInfo.setCpId(cpId);//上文提到的游戏参数 参数类型int

        gameParamInfo.setGameId(gameId);//上文提到的游戏参数 参数类型int

        gameParamInfo.setServerId(serverId);//上文提到的游戏参数 参数类型int

        //设置是否支持查询充值历史和显示切换账号功能,

        //如果不设置,默认具有查询充值历史记录,不具有切换账户功能

        gameParamInfo.setEnablePayHistory(true);//开启查询充值历史功能

        gameParamInfo.setEnableUserChange(true);//开启账号切换功能

        //设置SDK屏幕方向

        //LANDSCAPE:横屏,横屏游戏必须设置为横屏,PORTRAIT:竖屏

        gameParamInfo.setOrientation(UCOrientation.PORTRAIT);



        SDKParams sdkParams = new SDKParams();

        sdkParams.put(SDKParamKey.LOG_LEVEL, UCLogLevel.DEBUG);//日志等级

        sdkParams.put(SDKParamKey.GAME_PARAMS, gameParamInfo);

        //FIXME always debug

        //是否打开调试模式。

        //在为true的时候,会连接到联调测试环境(sdk.test4.9game.cn),

        //当为false的时候则会连接到正式环境(sdk.g.9game.cn)。

        sdkParams.put(SDKParamKey.DEBUG_MODE, false);

       

      try {

         sdk.initSdk(MainActivity.this, sdkParams);

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }

 

调用登录接口:

   private void login() {

      try {

         sdk.login(MainActivity.this, null);

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block activity为空,异常处理

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block 未初始化,异常处理

         e.printStackTrace();

      }

   }

调用支付接口:

   private void pay() {

      SDKParams sdkParams = new SDKParams();

      sdkParams.put(SDKParamKey.CALLBACK_INFO, "{\"test\":true}");

      sdkParams.put(SDKParamKey.SERVER_ID, "1");

      sdkParams.put(SDKParamKey.ROLE_ID, "AAA");

      sdkParams.put(SDKParamKey.ROLE_NAME, "BBB");

      sdkParams.put(SDKParamKey.GRADE, "grade1");

      sdkParams.put(SDKParamKey.NOTIFY_URL, "");

      sdkParams.put(SDKParamKey.AMOUNT, "2.33");

      sdkParams.put(SDKParamKey.CP_ORDER_ID, "20160000101001");

      sdkParams.put(SDKParamKey.ACCOUNT_ID, "123");

      sdkParams.put(SDKParamKey.SIGN_TYPE, "MD5");

      sdkParams.put(SDKParamKey.SIGN, "游戏服务器根据以上信息签名后的结果");

      // 以上字段的值都需要由游戏服务器生成



      try {

         UCGameSdk.defaultSdk().pay(MainActivity.this, sdkParams);

      } catch (IllegalArgumentException e) {

         // TODO Auto-generated catch block 参数错

         e.printStackTrace();

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block activity null

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block 未初始化

         e.printStackTrace();

      }

   }

参数说明:

参数定义

参数名称

类型

是否必填

说明

ROLE_ID

roleId

String

角色ID

ROLE_NAME

roleName

String

角色名称

GRADE

grade

String

角色等级

CALLBACK_INFO

callbackInfo

String

cp自定义信息,在支付结果通知时回传,CP可以自己定义格式,长度不超过250

AMOUNT

amount

String

充值金额,如果传递为0表示用户可以自定义充值金额,保留小数点后2位,单位为元。例:10.00

SERVER_ID

serverId

String

服务器ID,默认为0

NOTIFY_URL

notifyUrl

String

服务器通知地址,如果为空以服务端配置地址作为通知地址,长度不超过100

CP_ORDER_ID

cpOrderId

String

cp充值订单号,需要保证用户每次充值订单号的唯一性,长度不超过30

ACCOUNT_ID

accountId

String

用户id,充值用户的统一账号ID,由阿里游戏平台生成。

SIGN_TYPE

signType

String

签名类型,MD5或者RSA

目前只支持MD5

SIGN

sign

String

签名结果。

MD5(签名内容+apiKey); 服务端生成

签名算法参考官方说明

 

接入提交游戏角色数据信息:

数据提交时机:

1、用户创建角色或已有角色进入游戏后

2、当用户的角色等级发生变化后

   private void sendUserInfo() {

      SDKParams sdkParams = new SDKParams();

        sdkParams.put(SDKParamKey.STRING_ROLE_ID, "roleId");

        sdkParams.put(SDKParamKey.STRING_ROLE_NAME, "roleName");

        sdkParams.put(SDKParamKey.LONG_ROLE_LEVEL, 1);

        sdkParams.put(SDKParamKey.STRING_ZONE_ID, "zoneId");

        sdkParams.put(SDKParamKey.STRING_ZONE_NAME, "serverId");

        sdkParams.put(SDKParamKey.LONG_ROLE_CTIME, 1456397360);

      try {

         sdk.submitRoleData(MainActivity.this, sdkParams);

      } catch (IllegalArgumentException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }

 

参数说明:

参数定义

参数名称

类型

是否必填

说明

STRING_ROLE_ID

roleId

String

角色ID,长度不超过50

STRING_ROLE_NAME

roleName

String

角色名称,长度不超过50

LONG_ROLE_LEVEL

roleLevel

Long

角色等级,长度不超过10

LONG_ROLE_CTIME

roleCTime

Long

角色创建时间(单位:秒),长度10,获取服务器存储的时间,不可用手机本地时间

STRING_ZONE_ID

zoneId

String

区服ID,长度不超过50

STRING_ZONE_NAME

zoneName

String

区服名称,长度不超过50

 

登出与退出:登出为注销当前账号,游戏应返回登陆界面,退出为关闭游戏。

 

接入登出接口:

   private void logout(){

      try {

         sdk.logout(MainActivity.this, null);

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }

 

接入退出接口:

   private void exit() {

      try {

         sdk.exit(MainActivity.this, null);

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }

 

²  代码混淆要求

如果游戏发布时采用proguard进行代码混淆,请在proguard配置文件加入以下代码,以避免对SDK进行混淆,否则会造成SDK部分功能不正常。

-libraryjars './libs/alipay_sdk.jar'

-libraryjars './libs/ucgamesdk.jar'



-keep class android.**{

<methods>;

<fields>;

}

-keep class cn.uc.**{

<methods>;

<fields>;

}

-keep class com.alipay.**{

<methods>;
<fields>;
}

-keep class com.ta.**{

<methods>;
<fields>;
}

-keep class com.ut.**{
<methods>;
<fields>;
} 

-keep class org.json. **{
<methods>;
<fields>;
}

 

到这里就是接入完毕了,添加相应UI控件出包就是一个接入渠道的demo了,如果和游戏交互完成服务端接入完成,打包后就是成品啦,clean后到bin下面找 .apk包吧。

 

 

 

如果想了解更多,请关注我们的blog和官网

http://www.typesdk.com/documents

http://blog.csdn.net/kasimshi

转载于:https://my.oschina.net/u/3024661/blog/881235

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值