Commit 5553a3ffd4dd7f16c071b4f6c3fdf44c8d55ad8c
1 parent
e877dd7d02
Exists in
master
版本4.8.6
Showing 1 changed file with 160 additions and 128 deletions Side-by-side Diff
README.md
1 | 1 | # Gump SDK 4 for Android接入文档 |
2 | 2 | |
3 | - | |
4 | -V4.8.0 | |
5 | -2020年01月15日 | |
3 | +V4.8.6 | |
4 | +2020年08月6日 | |
6 | 5 | |
7 | 6 | |
8 | 7 | ## 版本概述 |
... | ... | @@ -15,181 +14,213 @@ V4.8.0 |
15 | 14 | ### 1.依赖导入 |
16 | 15 | 配置gradle,以下为必须项 |
17 | 16 | |
18 | - repositories{ | |
19 | - maven{ | |
20 | - url "http://117.50.8.198:8081/nexus/content/repositories/sdk" | |
21 | - } | |
22 | - } | |
23 | - dependencies { | |
24 | - implementation 'com.gumptech.sdk:GameSDK:4.8.0' | |
17 | +```groovy | |
18 | +repositories{ | |
19 | + maven{ | |
20 | + url "http://117.50.8.198:8081/nexus/content/repositories/sdk" | |
21 | + } | |
22 | +} | |
23 | +dependencies { | |
24 | + implementation 'com.gumptech.sdk:GameSDK:4.8.6' | |
25 | + | |
26 | +} | |
27 | +``` | |
25 | 28 | |
26 | - } | |
27 | - | |
28 | 29 | |
29 | 30 | ### 2.修改AndroidManifest.xml文件 |
30 | 31 | 首先添加必要的权限,如下所示: |
31 | 32 | |
32 | - <uses-permission android:name="android.permission.INTERNET" /> | |
33 | - <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | |
34 | - <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> | |
35 | - <!-- VERY IMPORTANT! Don't forget this permission, or in-app billing won't work. --> | |
36 | - <uses-permission android:name="com.android.vending.BILLING" /> | |
37 | - | |
33 | +```xml | |
34 | +<uses-permission android:name="android.permission.INTERNET" /> | |
35 | +<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | |
36 | +<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> | |
37 | +<!-- VERY IMPORTANT! Don't forget this permission, or in-app billing won't work. --> | |
38 | +<uses-permission android:name="com.android.vending.BILLING" /> | |
39 | +``` | |
40 | + | |
38 | 41 | 其次注册相应的Activity,具体如下: |
39 | 42 | |
40 | - <activity | |
41 | - android:name="com.gump.game.sdk.PassportActivity" | |
42 | - android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout" | |
43 | - android:launchMode="singleTask" | |
44 | - android:theme="@style/Theme.Origin" //登录界面的主题,可选项:Theme.Origin\Theme.Orange\Theme.Blue\Theme.Pink | |
45 | - android:screenOrientation="behind" | |
46 | - android:windowSoftInputMode="stateAlwaysHidden|adjustPan"> | |
47 | - </activity> | |
48 | - <activity | |
49 | - android:name="com.gump.game.sdk.RechargeActivity" | |
43 | +```xml | |
44 | +<activity | |
45 | + android:name="com.gump.game.sdk.PassportActivity" | |
50 | 46 | android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout" |
51 | 47 | android:launchMode="singleTask" |
52 | - android:screenOrientation="behind" | |
53 | - android:theme="@style/Theme.Translucent" > | |
54 | - <intent-filter> | |
55 | - <category android:name="android.intent.category.DEFAULT" /> | |
56 | - <action android:name="android.intent.action.VIEW" /> | |
57 | - <category android:name="android.intent.category.BROWSABLE" /> | |
58 | - <data | |
59 | - android:host="com.gump.sdk" | |
60 | - android:scheme="gump+游戏的appId" /> | |
61 | - </intent-filter> | |
62 | - </activity> | |
63 | - | |
48 | + android:theme="@style/Theme.Origin" //登录界面的主题,可选项:Theme.Origin\Theme.Orange\Theme.Blue\Theme.Pink | |
49 | + android:screenOrientation="behind" | |
50 | + android:windowSoftInputMode="stateAlwaysHidden|adjustPan"> | |
51 | +</activity> | |
52 | +<activity | |
53 | + android:name="com.gump.game.sdk.RechargeActivity" | |
54 | + android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout" | |
55 | + android:launchMode="singleTask" | |
56 | + android:screenOrientation="behind" | |
57 | + android:theme="@style/Theme.Translucent" > | |
58 | + <intent-filter> | |
59 | + <category android:name="android.intent.category.DEFAULT" /> | |
60 | + <action android:name="android.intent.action.VIEW" /> | |
61 | + <category android:name="android.intent.category.BROWSABLE" /> | |
62 | + <data | |
63 | + android:host="com.gump.sdk" | |
64 | + android:scheme="gump+游戏的appId" /> | |
65 | + </intent-filter> | |
66 | +</activity> | |
67 | +``` | |
68 | + | |
64 | 69 | ### 3.向Gump平台索要游戏ID(AppID),完成代码接入 |
65 | 70 | 正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入 |
66 | 71 | |
67 | 72 | *是否打印debug日志 |
68 | 73 | |
69 | - GameSDK.getSettings().enableDebugLogging(true); | |
70 | - | |
74 | +```java | |
75 | +GameSDK.getSettings().enableDebugLogging(true); | |
76 | +``` | |
77 | + | |
71 | 78 | *设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明 |
72 | 79 | |
73 | - GameSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_*); | |
80 | +```java | |
81 | +GameSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_*); | |
82 | +``` | |
74 | 83 | |
75 | 84 | |
76 | 85 | #### 1.调用GameSDK前需要执行初始化。 |
77 | 86 | |
78 | 87 | 若不需要分渠道 |
79 | 88 | |
80 | - GameSDK.init(Context,Appid); | |
89 | +```java | |
90 | +GameSDK.init(Context,Appid); | |
91 | +``` | |
81 | 92 | 如果需要定义渠道,必须使用如下方法 |
82 | 93 | |
83 | - GameSDK.init(Context,Appid,ChannelId); | |
94 | +```java | |
95 | +GameSDK.init(Context,Appid,ChannelId); | |
96 | +``` | |
84 | 97 | |
85 | 98 | |
86 | 99 | #### 2.调用GameSDK的登录方法,将执行登录流程,需要一个Activity实例作参数 |
87 | 100 | |
88 | - GameSDK.login(Activity); | |
101 | +```java | |
102 | +GameSDK.login(Activity); | |
103 | +``` | |
89 | 104 | 在此之前,开发者需要注册用户状态监听以接受用户的登录/登出通知,通常如下: |
90 | 105 | |
91 | - GameSDK.setUserStateListener(new LoginStateListener() { | |
92 | - @Override | |
93 | - public void onLoginSuccess(GumpUser gumpUser) { | |
94 | - //登录成功,用户信息包含在GumpUser对象里 | |
95 | - } | |
96 | - | |
97 | - @Override | |
98 | - public void onLoginFailed(int code, String msg) { | |
99 | - //登录出错,根据错误码和信息判断错误类型 | |
100 | - Toast.makeText(MainActivity.this, "Login failed:code="+code+",message="+msg, Toast.LENGTH_SHORT).show(); | |
101 | - } | |
102 | - | |
103 | - @Override | |
104 | - public void onLoginCanceled() { | |
105 | - //用户取消登录 | |
106 | - Toast.makeText(MainActivity.this, "operate be canceled", Toast.LENGTH_SHORT).show(); | |
107 | - } | |
108 | - | |
109 | - @Override | |
110 | - public void onLogout() { | |
111 | - //用户登出 | |
112 | - | |
113 | - } | |
114 | - @Override | |
115 | - public void onPermissionDenied(String[] deniedPermissions) { | |
116 | - //用户未授予权限,参数为没有获取的权限 | |
117 | - } | |
118 | - }); | |
119 | - | |
106 | +```java | |
107 | +GameSDK.setUserStateListener(new LoginStateListener() { | |
108 | + @Override | |
109 | + public void onLoginSuccess(GumpUser gumpUser) { | |
110 | + //登录成功,用户信息包含在GumpUser对象里 | |
111 | + } | |
112 | + | |
113 | + @Override | |
114 | + public void onLoginFailed(int code, String msg) { | |
115 | + //登录出错,根据错误码和信息判断错误类型 | |
116 | + Toast.makeText(MainActivity.this, "Login failed:code="+code+",message="+msg, Toast.LENGTH_SHORT).show(); | |
117 | + } | |
118 | + | |
119 | + @Override | |
120 | + public void onLoginCanceled() { | |
121 | + //用户取消登录 | |
122 | + Toast.makeText(MainActivity.this, "operate be canceled", Toast.LENGTH_SHORT).show(); | |
123 | + } | |
124 | + | |
125 | + @Override | |
126 | + public void onLogout() { | |
127 | + //用户登出 | |
128 | + | |
129 | + } | |
130 | + @Override | |
131 | + public void onPermissionDenied(String[] deniedPermissions) { | |
132 | + //用户未授予权限,参数为没有获取的权限 | |
133 | + } | |
134 | + }); | |
135 | +``` | |
136 | + | |
120 | 137 | 如上成功登录后收到的GumpUser对象包含以下信息 |
121 | 138 | |
122 | - gumpUser.getUid();//获取用户的userid,此Id标识唯一用户! | |
123 | - gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取 | |
124 | - gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法 | |
139 | +```java | |
140 | +gumpUser.getUid();//获取用户的userid,此Id标识唯一用户! | |
141 | +gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取 | |
142 | +gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法 | |
143 | +``` | |
125 | 144 | |
126 | 145 | #### 3.支付功能 |
127 | 146 | 调用支付前需先判断支付状态,根据状态调用支付方法 |
128 | 147 | |
129 | - GameSDK.iapUsable(Activity, serverId, roleId, new ResultCallback() { | |
130 | - @Override | |
131 | - public void onResult(boolean result) { | |
132 | - if(result){ | |
133 | - //调用GameSDK.iap | |
134 | - }else{ | |
135 | - //调用GameSDK.pay | |
136 | - } | |
137 | - } | |
138 | - }); | |
148 | +```java | |
149 | +GameSDK.iapUsable(Activity, serverId, roleId, new ResultCallback() { | |
150 | + @Override | |
151 | + public void onResult(boolean result) { | |
152 | + if(result){ | |
153 | + //调用GameSDK.iap | |
154 | + }else{ | |
155 | + //调用GameSDK.pay | |
156 | + } | |
157 | + } | |
158 | + }); | |
159 | +``` | |
139 | 160 | |
140 | 161 | 1)调用GameSDK.pay |
141 | 162 | |
142 | - Bundle payInfo = new Bundle(); | |
143 | - payInfo.putString("product", "元宝"); | |
144 | - payInfo.putFloat("amount", 40.0f); | |
145 | - payInfo.putString("extraInfo", "This is demo!"); | |
146 | - payInfo.putString("serverId", "B4003"); | |
147 | - payInfo.putString("roleId", "10010"); | |
148 | - payInfo.putString("currency","currency"); | |
149 | - GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback); | |
163 | +```java | |
164 | +Bundle payInfo = new Bundle(); | |
165 | +payInfo.putString("product", "元宝"); | |
166 | +payInfo.putFloat("amount", 40.0f); | |
167 | +payInfo.putString("extraInfo", "This is demo!"); | |
168 | +payInfo.putString("serverId", "B4003"); | |
169 | +payInfo.putString("roleId", "10010"); | |
170 | +payInfo.putString("currency","currency"); | |
171 | +GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback); | |
172 | +``` | |
150 | 173 | 调用pay方法时,必须穿入一个bundle对象,包含如上字段,所有字段必须全部包含 |
151 | 174 | |
152 | 175 | |
153 | 176 | 2)IAP支付 |
154 | 177 | |
155 | - Bundle payInfo = new Bundle(); | |
156 | - payInfo.putString("product", "gp_skuId"); | |
157 | - payInfo.putFloat("amount", 0.1f); | |
158 | - payInfo.putString("extraInfo", "This is demo!"); | |
159 | - payInfo.putString("serverId", "100"); | |
160 | - payInfo.putString("roleId","100123"); | |
161 | - GumpSDK.iap(MainActivity.this, payInfo, PurchaseCallback); | |
162 | - | |
178 | +```java | |
179 | +Bundle payInfo = new Bundle(); | |
180 | +payInfo.putString("product", "gp_skuId"); | |
181 | +payInfo.putFloat("amount", 0.1f); | |
182 | +payInfo.putString("extraInfo", "This is demo!"); | |
183 | +payInfo.putString("serverId", "100"); | |
184 | +payInfo.putString("roleId","100123"); | |
185 | +GumpSDK.iap(MainActivity.this, payInfo, PurchaseCallback); | |
186 | +``` | |
187 | + | |
163 | 188 | 3)PurchaseCallback为支付状态回调接口,此接口含有3个方法 |
164 | 189 | |
165 | - @Override | |
166 | - public void onPurchaseCompleted() { | |
167 | - Log.i(TAG,"purchase completed"); | |
168 | - } | |
190 | +```java | |
191 | +@Override | |
192 | +public void onPurchaseCompleted() { | |
193 | + Log.i(TAG,"purchase completed"); | |
194 | +} | |
169 | 195 | |
170 | - @Override | |
171 | - public void onPurchaseError(int code, String msg) { | |
172 | - Log.i(TAG,"purchase error"); | |
173 | - } | |
196 | +@Override | |
197 | +public void onPurchaseError(int code, String msg) { | |
198 | + Log.i(TAG,"purchase error"); | |
199 | +} | |
200 | + | |
201 | +@Override | |
202 | +public void onPurchaseCanceled() { | |
203 | + Log.i(TAG,"purchase canceled"); | |
204 | +} | |
205 | +``` | |
174 | 206 | |
175 | - @Override | |
176 | - public void onPurchaseCanceled() { | |
177 | - Log.i(TAG,"purchase canceled"); | |
178 | - } | |
179 | - | |
180 | 207 | #### 4.注销登录 |
181 | 208 | |
182 | - GameSDK.logout(Activity); | |
209 | +```java | |
210 | +GameSDK.logout(Activity); | |
211 | +``` | |
183 | 212 | 当此方法调用后,用户退出登录,并会通过LoginStateListener接口通知调用程序!为了便于用户切换登录账户,请在游戏内提供用户注销的触发按钮 |
184 | 213 | #### 5.运营开关接口,若需要接入,会有我方运营人员提出需求,否则不需要接入(若对此接口不知所云,即可认为不需要接入,请自行忽略) |
185 | - | |
186 | - GameSDK.inspectRiskLevel(this, new ResultCallback() { | |
187 | - @Override | |
188 | - public void onResult(boolean result) { | |
189 | - Log.i(TAG,result?"There is some risks":"Nothing is risk"); | |
190 | - } | |
191 | - }); | |
192 | - | |
214 | + | |
215 | +```java | |
216 | +GameSDK.inspectRiskLevel(this, new ResultCallback() { | |
217 | + @Override | |
218 | + public void onResult(boolean result) { | |
219 | + Log.i(TAG,result?"There is some risks":"Nothing is risk"); | |
220 | + } | |
221 | + }); | |
222 | +``` | |
223 | + | |
193 | 224 | ## 第二章 常量字段与代码 |
194 | 225 | ### 1.第三方登录平台(third_plat) |
195 | 226 | | 常量字段 | 说明 | |
... | ... | @@ -221,6 +252,7 @@ V4.8.0 |
221 | 252 | -keep public class com.android.vending.licensing.ILicensingService |
222 | 253 | -keep class com.gump.game.sdk.view.* {*;} |
223 | 254 | -keep class com.gump.game.sdk.web.* {*;} |
224 | - | |
225 | - | |
255 | + | |
256 | + | |
257 | + | |
226 | 258 | 使得混淆的时候不会影响SDK的命名空间。 |
227 | 259 | \ No newline at end of file |