Commit 12a4c3bb0df96a3232bef95df747fc73a739ec0b

Authored by lixiang
1 parent 442078de6e
Exists in master

升级google5.0支付

Showing 1 changed file with 4 additions and 3 deletions Inline Diff

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