Blame view

README.md 8.35 KB
d3c7882c1   赵康   first commit:4.+
1
  # Gump SDK 4 for Android接入文档
1e361ab0f   赵康   clear conflicts
2

41b4f2203   赵康   update version
3
4
  V4.7.2       
  2019年06月11日
d3c7882c1   赵康   first commit:4.+
5

d3c7882c1   赵康   first commit:4.+
6

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

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

c4a5d1b80   赵康   update to version...
11
  此SDK适用android4.0以上系统.
d3c7882c1   赵康   first commit:4.+
12
13
  
  ## 第一章  接入指南
6a217e5ca   赵康   version4.5.0
14
15
  ### 1.依赖导入    
  配置gradle,以下为必须项    
d3c7882c1   赵康   first commit:4.+
16
17
  
      repositories{
c4a5d1b80   赵康   update to version...
18
19
20
          maven{
          	url "http://117.50.8.198:8081/nexus/content/repositories/sdk"
      	}
d3c7882c1   赵康   first commit:4.+
21
22
      }
      dependencies {
41b4f2203   赵康   update version
23
          implementation 'com.gumptech.sdk:GameSDK:4.7.2'
1e361ab0f   赵康   clear conflicts
24

d3c7882c1   赵康   first commit:4.+
25
26
      }
      
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
      <!-- VERY IMPORTANT! Don't forget this permission, or in-app billing won't work. -->
      <uses-permission android:name="com.android.vending.BILLING" />
      
  其次注册相应的Activity,具体如下:  
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
38
      
d3c7882c1   赵康   first commit:4.+
39
40
41
42
      <activity
          android:name="com.gumptech.sdk.PaymentActivity"
          android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
          android:launchMode="singleTask"
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
43
44
  		android:screenOrientation="behind"
          android:theme="@style/Theme.Translucent" >
d3c7882c1   赵康   first commit:4.+
45
46
47
48
49
50
51
52
53
          <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...
54
      
4112d606c   赵康   optimize document
55
  ### 3.向Gump平台索要游戏ID(AppID),完成代码接入     
d3c7882c1   赵康   first commit:4.+
56
57
58
  正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入  
  
  *是否打印debug日志    
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
59
      GumpSDK.getSettings().enableDebugLogging(true); 
d3c7882c1   赵康   first commit:4.+
60
      
7bbc228ed   赵康   fix error in links
61
  *设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明
9db6d7eb0   赵康   version4.2.0:upda...
62

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

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

4112d606c   赵康   optimize document
118
  #### 3.支付功能  
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
119
120
121
122
123
124
125
126
127
128
129
130
131
132
  调用支付前需先获取支付状态,根据状态调用支付方法  
  
  	GumpSDK.shouldUseCoPay(Activity, serverId, roleId, new ResultCallback() {
                      @Override
                      public void onResult(boolean result) {
                          if(result){
  						//调用GumpSDK.iap
  						}else{
  						//调用GumpSDK.pay
  						}	
                      }
                  });
  
  1)调用GumpSDK.pay     
d3c7882c1   赵康   first commit:4.+
133
134
  
      Bundle payInfo = new Bundle();
d3c7882c1   赵康   first commit:4.+
135
136
137
138
139
      payInfo.putString("product", "元宝");
      payInfo.putFloat("amount", 40.0f);
      payInfo.putString("extraInfo", "This is demo!");
      payInfo.putString("serverId", "B4003");
      payInfo.putString("roleId", "10010");
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
140
      payInfo.putString("currency","currency");
d3c7882c1   赵康   first commit:4.+
141
      GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback);
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
142
  调用pay方法时,必须穿入一个bundle对象,包含如上字段,所有字段必须全部包含  
d3c7882c1   赵康   first commit:4.+
143
144
      
      
5defbc2c6   赵康   version4.2.0:upda...
145
  2)IAP支付   
607ad49c5   赵康   分离iap支付
146
147
148
149
150
151
152
153
154
155
      
      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.+
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
  
      @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
172
  #### 4.注销登录      
d3c7882c1   赵康   first commit:4.+
173
174
  
      GumpSDK.logout(Activity);
ce7352ea7   赵康   update version to...
175
176
177
178
179
180
181
182
183
184
  当此方法调用后,用户退出登录,并会通过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...
185
  ## 第二章 常量字段与代码
441ba61c5   赵康   update format
186
  ### 1.第三方登录平台(third_plat)
472513368   赵康   取消游客绑定提醒
187
  	|         常量字段                |    说明       |
441ba61c5   赵康   update format
188
  	|--------------------------------|--------------|
472513368   赵康   取消游客绑定提醒
189
190
191
  	|SDKSettings.THIRD_SUPPORT_FB    | Facebook登录  |
  	|SDKSettings.THIRD_SUPPORT_GOOGLE| Google登录    |
  	|SDKSettings.THIRD_SUPPORT_LINE  | Line登录      |
d42a06680   赵康   remove wechat log...
192

43932caac   赵康   update for UI,add...
193
  ### 2.登录账户类型
472513368   赵康   取消游客绑定提醒
194
195
196
197
  	|               常量字段               |      说明     |
  	|-------------------------------------|--------------|
  	|GumpPreference.ACCOUNT_TYPE_FB       | Facebook用户  |
  	|GumpPreference.ACCOUNT_TYPE_REG      | Gump注册用户  |
f97711df6   赵康   the demo for sdk ...
198
  	|GumpPreference.ACCOUNT_TYPE_QUICK_REG| 游客          |
472513368   赵康   取消游客绑定提醒
199
200
  	|GumpPreference.ACCOUNT_TYPE_GOOGLE   | Google用户    |
  	|GumpPreference.ACCOUNT_TYPE_LINE     | Line用户      |
f97711df6   赵康   the demo for sdk ...
201

d42a06680   赵康   remove wechat log...
202

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