Blame view

README.md 8.35 KB
d3c7882c1   赵康   first commit:4.+
1
  # Gump SDK 4 for Android接入文档
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
2
3
  V4.7.0       
  2019年02月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 {
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
21
          implementation 'com.gumptech.sdk:GameSDK:4.7.0'
d3c7882c1   赵康   first commit:4.+
22
23
      }
      
d3c7882c1   赵康   first commit:4.+
24

4112d606c   赵康   optimize document
25
  ### 2.修改AndroidManifest.xml文件
d3c7882c1   赵康   first commit:4.+
26
27
28
  首先添加必要的权限,如下所示:  
  
      <uses-permission android:name="android.permission.INTERNET" />
d3c7882c1   赵康   first commit:4.+
29
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
d3c7882c1   赵康   first commit:4.+
30
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
d3c7882c1   赵康   first commit:4.+
31
32
33
34
      <!-- 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:增加支付弹窗...
35
      
d3c7882c1   赵康   first commit:4.+
36
37
38
39
      <activity
          android:name="com.gumptech.sdk.PaymentActivity"
          android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
          android:launchMode="singleTask"
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
40
41
  		android:screenOrientation="behind"
          android:theme="@style/Theme.Translucent" >
d3c7882c1   赵康   first commit:4.+
42
43
44
45
46
47
48
49
50
          <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...
51
      
4112d606c   赵康   optimize document
52
  ### 3.向Gump平台索要游戏ID(AppID),完成代码接入     
d3c7882c1   赵康   first commit:4.+
53
54
55
  正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入  
  
  *是否打印debug日志    
4a6edc661   赵康   SDK v4.7.0:增加支付弹窗...
56
      GumpSDK.getSettings().enableDebugLogging(true); 
d3c7882c1   赵康   first commit:4.+
57
      
7bbc228ed   赵康   fix error in links
58
  *设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明
9db6d7eb0   赵康   version4.2.0:upda...
59

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

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

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

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

d42a06680   赵康   remove wechat log...
199

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