Commit 047ea78c60475a81f36afd4ac8e3678e231fe223

Authored by 赵康
1 parent 7bcb33a927
Exists in master

更新版本

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

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