Blame view

README.md 9.07 KB
d3c7882c1   赵康   first commit:4.+
1
  # Gump SDK 4 for Android接入文档
d42a06680   赵康   remove wechat log...
2
3
  V4.5.8       
  2018年9月20日
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 {
d42a06680   赵康   remove wechat log...
21
          implementation 'com.gumptech.sdk:GameSDK:4.5.8'
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

4112d606c   赵康   optimize document
28
  ### 2.修改AndroidManifest.xml文件
d3c7882c1   赵康   first commit:4.+
29
30
31
  首先添加必要的权限,如下所示:  
  
      <uses-permission android:name="android.permission.INTERNET" />
d3c7882c1   赵康   first commit:4.+
32
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
d3c7882c1   赵康   first commit:4.+
33
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
d3c7882c1   赵康   first commit:4.+
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
      <!-- 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>
d6b9069ea   赵康   update to 4.1.0:F...
60
61
      
      <!-- vk登录使用,若不接入vk,不需配置 -->
d3c7882c1   赵康   first commit:4.+
62
63
64
65
66
67
      <activity android:name="com.vk.sdk.VKOpenAuthActivity" />
      <activity
          android:name="com.vk.sdk.VKServiceActivity"
          android:label="ServiceActivity"
          android:theme="@style/VK.Transparent" />
      
4112d606c   赵康   optimize document
68
  ### 3.向Gump平台索要游戏ID(AppID),完成代码接入     
d3c7882c1   赵康   first commit:4.+
69
70
71
72
73
  正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入  
  
  *是否打印debug日志    
  
      GumpSDK.getSettings().enableDebugLogging(true);
d3c7882c1   赵康   first commit:4.+
74
75
76
77
  *横竖屏控制,默认为横屏,参数为false即为竖屏   
      
      GumpSDK.getSettings().setScreenLandscape(true);   
      
7bbc228ed   赵康   fix error in links
78
  *设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明
9db6d7eb0   赵康   version4.2.0:upda...
79

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

656f5f9fd   赵康   merge payment v3 ...
82
83
84
  *若要使用V4版支付请设置
  
      GumpSDK.getSettings().setPaymentVersion(PaymentVersion.V4);
4112d606c   赵康   optimize document
85
  #### 1.调用GumpSDK前需要执行初始化。     
d3c7882c1   赵康   first commit:4.+
86
87
88
89
90
91
92
93
94
  
  若不需要分渠道      
  
      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
95
  #### 2.调用GumpSDK的开始方法,将执行登录流程,需要一个Activity实例作参数       
d3c7882c1   赵康   first commit:4.+
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  
      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
123
  	     @Override
057d4c203   赵康   v4.5.5:权限拒绝回调方法增加参数
124
125
              public void onPermissionDenied(String[] deniedPermissions) {
  			//用户未授予权限,参数为没有获取的权限
6a217e5ca   赵康   version4.5.0
126
              }
d3c7882c1   赵康   first commit:4.+
127
128
129
130
131
132
          });
      
  如上成功登录后收到的GumpUser对象包含以下信息  
  
      gumpUser.getUid();//获取用户的userid,此Id标识唯一用户!  
      gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取  
c4a5d1b80   赵康   update to version...
133
      gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法  
d3c7882c1   赵康   first commit:4.+
134

4112d606c   赵康   optimize document
135
  #### 3.支付功能  
5defbc2c6   赵康   version4.2.0:upda...
136
  1)使用gump通行证登录,其中除nick外所有参数为必传参数     
d3c7882c1   赵康   first commit:4.+
137
138
139
140
141
142
143
144
145
146
  
      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
147
  调用pay方法时,必须穿入一个bundle对象,包含如上字段,除nick外所有字段必须全部包含,其中sessionKey为登录时返回的sessionKey  
d3c7882c1   赵康   first commit:4.+
148
149
      
      
5defbc2c6   赵康   version4.2.0:upda...
150
  2)IAP支付   
607ad49c5   赵康   分离iap支付
151
152
153
154
155
156
157
158
159
160
      
      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.+
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
  
      @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
177
  #### 4.注销登录      
d3c7882c1   赵康   first commit:4.+
178
179
  
      GumpSDK.logout(Activity);
ce7352ea7   赵康   update version to...
180
181
182
183
184
185
186
187
188
189
  当此方法调用后,用户退出登录,并会通过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...
190
  ## 第二章 常量字段与代码
441ba61c5   赵康   update format
191
  ### 1.第三方登录平台(third_plat)
472513368   赵康   取消游客绑定提醒
192
  	|         常量字段                |    说明       |
441ba61c5   赵康   update format
193
  	|--------------------------------|--------------|
472513368   赵康   取消游客绑定提醒
194
195
196
197
  	|SDKSettings.THIRD_SUPPORT_FB    | Facebook登录  |
  	|SDKSettings.THIRD_SUPPORT_GOOGLE| Google登录    |
  	|SDKSettings.THIRD_SUPPORT_LINE  | Line登录      |
  	|SDKSettings.THIRD_SUPPORT_VK    | VK登录        |
d42a06680   赵康   remove wechat log...
198

43932caac   赵康   update for UI,add...
199
  ### 2.登录账户类型
472513368   赵康   取消游客绑定提醒
200
201
202
203
204
205
206
207
  	|               常量字段               |      说明     |
  	|-------------------------------------|--------------|
  	|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用户        |
d42a06680   赵康   remove wechat log...
208

43932caac   赵康   update for UI,add...
209
210
  
  ## 第三章 常见问题      
d3c7882c1   赵康   first commit:4.+
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
  ### 问题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的命名空间。