zoukankan      html  css  js  c++  java
  • 1.2 游戏sdk接入教程:uc(阿里游戏)接入

    https://blog.csdn.net/kasimshi/article/details/73004194 (应用宝和360)

    上文中已介绍了环境与软件的安装配置(参见该网址:http://www.cnblogs.com/laohaizei/p/6723490.html),之后我们就可以开始学习接入渠道了,

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

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

     

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

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

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

     

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

    我这边的接入环境是Eclipse

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

     

     

     

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

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

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

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

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

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

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

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

     

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

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

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

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

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

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

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

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

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

    然后解压

    解压出来的目录格式:

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

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

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

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

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

     

    然后复制以下代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?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全选替换粘贴

    以上AndroidManifest.xml修改好了。

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

    首先打开我们的MainActivity.java

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    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.thisnull);
            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.thisnull);
            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.thisnull);
            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 + " ");
                }
                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 + " ");
                }
                Log.i(TAG, "pay fail");
            }
     
        };
     
    }

      


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

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

    第一种步创建监听:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    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 + " ");
                }
                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 + " ");
                }
                Log.i(tag, "pay fail");
            }
     
        };

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

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

    1
    2
    3
    4
    5
    6
    7
    @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);

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @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的初始化接口:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    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();
     
       }
     
    }

      

     

    调用登录接口:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    private void login() {
     
       try {
     
          sdk.login(MainActivity.thisnull);
     
       catch (AliLackActivityException e) {
     
          // TODO Auto-generated catch block activity为空,异常处理
     
          e.printStackTrace();
     
       catch (AliNotInitException e) {
     
          // TODO Auto-generated catch block 未初始化,异常处理
     
          e.printStackTrace();
     
       }
     
    }

      

     

    调用支付接口:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    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、当用户的角色等级发生变化后

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    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

     

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

     

    接入登出接口:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    private void logout(){
     
       try {
     
          sdk.logout(MainActivity.thisnull);
     
       catch (AliLackActivityException e) {
     
          // TODO Auto-generated catch block
     
          e.printStackTrace();
     
       catch (AliNotInitException e) {
     
          // TODO Auto-generated catch block
     
          e.printStackTrace();
     
       }
     
    }

      

     

    接入退出接口:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    private void exit() {
     
       try {
     
          sdk.exit(MainActivity.thisnull);
     
       catch (AliLackActivityException e) {
     
          // TODO Auto-generated catch block
     
          e.printStackTrace();
     
       catch (AliNotInitException e) {
     
          // TODO Auto-generated catch block
     
          e.printStackTrace();
     
       }
     
    }

      

     

    ²  代码混淆要求

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

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    -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

  • 相关阅读:
    ASP创建对象及中文显示解决方法
    webservice解读
    top监控工具
    Crontab实例
    javascript闭包的理解
    98万买下51.com域名,51.com不止2000万美金
    百度08年网页搜索份额73.2% 创历史新高
    讲故事投资 天使投资人的中国式生存
    下个谷歌将诞生于中国或印度
    Twitter入选10大搜索引擎
  • 原文地址:https://www.cnblogs.com/cyct/p/10617067.html
Copyright © 2011-2022 走看看