Commit f396f1ebd5f8da712f676e034e4e243ff6fd759d

Authored by 赵康
1 parent d42a066802
Exists in master

remove the content about wechat in the doc

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

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