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 + "\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了

 

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

 

第一种步创建监听:

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 + "\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);

 

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

posted on 2019-04-02 10:26  晨雨初听_cc  阅读(834)  评论(0编辑  收藏  举报