Blame view

README.md 10.3 KB
d3c7882c1   赵康   first commit:4.+
1
  # Gump SDK 4 for Android接入文档
472513368   赵康   取消游客绑定提醒
2
3
  V4.5.3       
  2018年8月21日
d3c7882c1   赵康   first commit:4.+
4

4112d606c   赵康   optimize document
5
  ## 版本概述
d3c7882c1   赵康   first commit:4.+
6

43932caac   赵康   update for UI,add...
7
  此版本为使用AndroidStudio开发的版本,一改eclipse的工程依赖方式,使用aar的方式提供sdk接入包,除功能外,相对上一版本没有继承关系,请按此文档描述接入.
d3c7882c1   赵康   first commit:4.+
8

c4a5d1b80   赵康   update to version...
9
  此SDK适用android4.0以上系统.
d3c7882c1   赵康   first commit:4.+
10
11
  
  ## 第一章  接入指南
6a217e5ca   赵康   version4.5.0
12
13
  ### 1.依赖导入    
  配置gradle,以下为必须项    
d3c7882c1   赵康   first commit:4.+
14
15
  
      repositories{
c4a5d1b80   赵康   update to version...
16
17
18
          maven{
          	url "http://117.50.8.198:8081/nexus/content/repositories/sdk"
      	}
d3c7882c1   赵康   first commit:4.+
19
20
      }
      dependencies {
472513368   赵康   取消游客绑定提醒
21
          implementation 'com.gumptech.sdk:GameSDK:4.5.3'
d3c7882c1   赵康   first commit:4.+
22
23
      }
      
d3c7882c1   赵康   first commit:4.+
24
25
       
  可选接入vk登录时,需要导入vkLibrary工程,并配置模块依赖,如下  
c4a5d1b80   赵康   update to version...
26
      implementation 'com.gumptech:VKsdk:1.5.4'
d3c7882c1   赵康   first commit:4.+
27

188bc4cf8   赵康   v4.3.3:增加微信登录
28
  选择接入微信登录时,需要增加微信依赖,如下:
c4a5d1b80   赵康   update to version...
29
  	implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:5.1.4'
188bc4cf8   赵康   v4.3.3:增加微信登录
30

4112d606c   赵康   optimize document
31
  ### 2.修改AndroidManifest.xml文件
d3c7882c1   赵康   first commit:4.+
32
33
34
  首先添加必要的权限,如下所示:  
  
      <uses-permission android:name="android.permission.INTERNET" />
d3c7882c1   赵康   first commit:4.+
35
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
d3c7882c1   赵康   first commit:4.+
36
37
38
      <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
d3c7882c1   赵康   first commit:4.+
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
      <!-- VERY IMPORTANT! Don't forget this permission, or in-app billing won't work. -->
      <uses-permission android:name="com.android.vending.BILLING" />
      
  其次注册相应的Activity,具体如下:  
  
      <activity
          android:name="com.gumptech.sdk.ContainerActivity"
          android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
          android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
          android:launchMode="singleTask"
          android:theme="@style/Theme.TransparentWin" >
      </activity>
      <activity
          android:name="com.gumptech.sdk.PaymentActivity"
          android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
          android:launchMode="singleTask"
          android:theme="@android:style/Theme.Translucent.NoTitleBar" >
          <intent-filter>
              <category android:name="android.intent.category.DEFAULT" />
              <action android:name="android.intent.action.VIEW" />
              <category android:name="android.intent.category.BROWSABLE" />
              <data
                  android:host="com.gump.sdk"
                  android:scheme="gump+游戏的appId" />
          </intent-filter>
      </activity>
      <activity
          android:name="com.gumptech.sdk.ExchangeWindow"
          android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
          android:theme="@style/Theme.WinForExchange" >
      </activity>
      
      <service android:name="com.gumptech.sdk.PushService" />
d6b9069ea   赵康   update to 4.1.0:F...
72
73
      
      <!-- vk登录使用,若不接入vk,不需配置 -->
d3c7882c1   赵康   first commit:4.+
74
75
76
77
78
      <activity android:name="com.vk.sdk.VKOpenAuthActivity" />
      <activity
          android:name="com.vk.sdk.VKServiceActivity"
          android:label="ServiceActivity"
          android:theme="@style/VK.Transparent" />
6a217e5ca   赵康   version4.5.0
79
80
81
82
       <!--wechat接入使用,不接入不需要配置-->
       <activity
          android:name=".wxapi.WXEntryActivity"
          android:exported="true"></activity>
d3c7882c1   赵康   first commit:4.+
83
      
4112d606c   赵康   optimize document
84
  ### 3.向Gump平台索要游戏ID(AppID),完成代码接入     
d3c7882c1   赵康   first commit:4.+
85
86
87
88
89
  正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入  
  
  *是否打印debug日志    
  
      GumpSDK.getSettings().enableDebugLogging(true);
d3c7882c1   赵康   first commit:4.+
90
91
92
93
  *横竖屏控制,默认为横屏,参数为false即为竖屏   
      
      GumpSDK.getSettings().setScreenLandscape(true);   
      
7bbc228ed   赵康   fix error in links
94
  *设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明
9db6d7eb0   赵康   version4.2.0:upda...
95

43932caac   赵康   update for UI,add...
96
      GumpSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_*);
9db6d7eb0   赵康   version4.2.0:upda...
97

656f5f9fd   赵康   merge payment v3 ...
98
99
100
  *若要使用V4版支付请设置
  
      GumpSDK.getSettings().setPaymentVersion(PaymentVersion.V4);
4112d606c   赵康   optimize document
101
  #### 1.调用GumpSDK前需要执行初始化。     
d3c7882c1   赵康   first commit:4.+
102
103
104
105
106
107
108
109
110
  
  若不需要分渠道      
  
      GumpSDK.init(Context,Appid, Appkey,InitializeCallback);   
  如果需要定义渠道,必须使用如下方法       
  
      GumpSDK.init(Context,Appid, Appkey,ChannelId,InitializeCallback);   
  
  InitializeCallback为初始化回调接口,此接口只有一个回调方法initComplete(int result) result标识是否初始化成功,当result等于GumpSDK.CODE.OK时为成功,其他为失败
4112d606c   赵康   optimize document
111
  #### 2.调用GumpSDK的开始方法,将执行登录流程,需要一个Activity实例作参数       
d3c7882c1   赵康   first commit:4.+
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
  
      GumpSDK.start(Activity);  
  在此之前,开发者需要注册用户状态监听以接受用户的登录/登出通知,通常如下:    
  
      GumpSDK.setUserStateListener(new LoginStateListener() {
              @Override
              public void onLoginSuccess(GumpUser gumpUser) {
                  //登录成功,用户信息包含在GumpUser对象里
              }
  
              @Override
              public void onLoginFailed(int code, String msg) {
                  //登录出错,根据错误码和信息判断错误类型
                  Toast.makeText(MainActivity.this, "Login failed:code="+code+",message="+msg, Toast.LENGTH_SHORT).show();
              }
  
              @Override
              public void onLoginCanceled() {
                  //用户取消登录
                  Toast.makeText(MainActivity.this, "operate be canceled", Toast.LENGTH_SHORT).show();
              }
  
              @Override
              public void onLogout() {
                  //用户登出
                  
              }
6a217e5ca   赵康   version4.5.0
139
140
141
142
  	     @Override
              public void onPermissionDenied() {
  		//用户拒绝授予权限
              }
d3c7882c1   赵康   first commit:4.+
143
144
145
146
147
148
          });
      
  如上成功登录后收到的GumpUser对象包含以下信息  
  
      gumpUser.getUid();//获取用户的userid,此Id标识唯一用户!  
      gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取  
c4a5d1b80   赵康   update to version...
149
      gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法  
d3c7882c1   赵康   first commit:4.+
150

188bc4cf8   赵康   v4.3.3:增加微信登录
151
152
153
  ***注意:若需要使用微信登录,需要在packageName.wxapi下增加一个名为WXEntryActivity并继承com.gumptech.sdk.WXCallbackActivity的Activity,并参考AndroidManifest.xml设置的说明,做相应的配置,packageName为应用的包名,此Activity不须任何实现。***
  
  ***以GumpSDKDemo为例,包名为com.gumptech.sdk.demo,则WXEntryActivity的完整包路径为:com.gumptech.sdk.demo.wxapi.WXEntryActivity***
d3c7882c1   赵康   first commit:4.+
154

4112d606c   赵康   optimize document
155
  #### 3.支付功能  
5defbc2c6   赵康   version4.2.0:upda...
156
  1)使用gump通行证登录,其中除nick外所有参数为必传参数     
d3c7882c1   赵康   first commit:4.+
157
158
159
160
161
162
163
164
165
166
  
      Bundle payInfo = new Bundle();
      payInfo.putString("nick", "thi");
      payInfo.putString("product", "元宝");
      payInfo.putFloat("amount", 40.0f);
      payInfo.putString("extraInfo", "This is demo!");
      payInfo.putString("serverId", "B4003");
      payInfo.putString("roleId", "10010");
      payInfo.putString("sessionKey","sessionkey");
      GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback);
7aeb33662   赵康   update document
167
  调用pay方法时,必须穿入一个bundle对象,包含如上字段,除nick外所有字段必须全部包含,其中sessionKey为登录时返回的sessionKey  
d3c7882c1   赵康   first commit:4.+
168
169
      
      
5defbc2c6   赵康   version4.2.0:upda...
170
  2)IAP支付   
607ad49c5   赵康   分离iap支付
171
172
173
174
175
176
177
178
179
180
      
      Bundle payInfo = new Bundle();
      payInfo.putString("product", "gp_skuId");
      payInfo.putFloat("amount", 0.1f);
      payInfo.putString("extraInfo", "This is demo!");
      payInfo.putString("serverId", "100");
      payInfo.putString("roleId","100123");
      GumpSDK.iap(MainActivity.this, payInfo, PurchaseCallback);
                  
  3)PurchaseCallback为支付状态回调接口,此接口含有3个方法  
d3c7882c1   赵康   first commit:4.+
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
  
      @Override
      public void onPurchaseCompleted(PurchaseResult result) {
          Log.i(TAG,"purchase completed");
      }
  
      @Override
      public void onPurchaseError(int code, String msg) {
          Log.i(TAG,"purchase error");
      }
  
      @Override
      public void onPurchaseCanceled() {
          Log.i(TAG,"purchase canceled");
      }
      
4112d606c   赵康   optimize document
197
  #### 4.注销登录      
d3c7882c1   赵康   first commit:4.+
198
199
  
      GumpSDK.logout(Activity);
ce7352ea7   赵康   update version to...
200
201
202
203
204
205
206
207
208
209
  当此方法调用后,用户退出登录,并会通过LoginStateListener接口通知调用程序!为了便于用户切换登录账户,请在游戏内提供用户注销的触发按钮   
  #### 5.运营开关接口,若需要接入,会有我方运营人员提出需求,否则不需要接入(若对此接口不知所云,即可认为不需要接入,请自行忽略)
      
      GumpSDK.checkRisk(this, new ResultCallback() {
              @Override
              public void onResult(boolean result) {
                  Log.i(TAG,result?"There is some risks":"Nothing is risk");
              }
          });
          
43932caac   赵康   update for UI,add...
210
  ## 第二章 常量字段与代码
441ba61c5   赵康   update format
211
  ### 1.第三方登录平台(third_plat)
472513368   赵康   取消游客绑定提醒
212
  	|         常量字段                |    说明       |
441ba61c5   赵康   update format
213
  	|--------------------------------|--------------|
472513368   赵康   取消游客绑定提醒
214
215
216
217
218
  	|SDKSettings.THIRD_SUPPORT_FB    | Facebook登录  |
  	|SDKSettings.THIRD_SUPPORT_GOOGLE| Google登录    |
  	|SDKSettings.THIRD_SUPPORT_LINE  | Line登录      |
  	|SDKSettings.THIRD_SUPPORT_VK    | VK登录        |
  	|SDKSettings.THIRD_SUPPORT_WECHAT| 微信登录      |
43932caac   赵康   update for UI,add...
219
  ### 2.登录账户类型
472513368   赵康   取消游客绑定提醒
220
221
222
223
224
225
226
227
228
  	|               常量字段               |      说明     |
  	|-------------------------------------|--------------|
  	|GumpPreference.ACCOUNT_TYPE_FB       | Facebook用户  |
  	|GumpPreference.ACCOUNT_TYPE_REG      | Gump注册用户  |
  	|GumpPreference.ACCOUNT_TYPE_QUICK_REG| 快速注册用户   |
  	|GumpPreference.ACCOUNT_TYPE_GOOGLE   | Google用户    |
  	|GumpPreference.ACCOUNT_TYPE_LINE     | Line用户      |
  	|GumpPreference.ACCOUNT_TYPE_VK       | VK用户        |
  	|GumpPreference.ACCOUNT_TYPE_WECHAT   | 微信用户      |
43932caac   赵康   update for UI,add...
229
230
  
  ## 第三章 常见问题      
d3c7882c1   赵康   first commit:4.+
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
  ### 问题1: 如何避免混淆对SDK的影响?       
  解答:有些开发者对接入了SDK的程序进行混淆时,有可能会覆盖某些java
  类,导致SDK无法正常工作,解决方法如下:      
  Ø  请开发者在混淆配置文件proguard.cfg或proguard-project.txt的最后加上       
  
      -keepattributes *Annotation*,InnerClasses,SourceFile,LineNumberTable
      -keep public class * extends android.app.Service
      -keep public class com.google.vending.licensing.ILicensingService
      -keep public class com.android.vending.licensing.ILicensingService
      -keep class com.gumptech.sdk.view.* {*;}
      -keep class com.gumptech.sdk.web.* {*;}
      -keep class com.gumptech.sdk.bridge.impl.*{*;}
      
      
  使得混淆的时候不会影响SDK的命名空间。