Blame view

README.md 8.55 KB
d3c7882c1   赵康   first commit:4.+
1
  # Gump SDK 4 for Android接入文档
f97711df6   赵康   the demo for sdk ...
2
3
  V4.6.2       
  2018年10月19日
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 {
f97711df6   赵康   the demo for sdk ...
21
          implementation 'com.gumptech.sdk:GameSDK:4.6.2'
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
      <!-- 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...
57
      
4112d606c   赵康   optimize document
58
  ### 3.向Gump平台索要游戏ID(AppID),完成代码接入     
d3c7882c1   赵康   first commit:4.+
59
60
61
62
63
  正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入  
  
  *是否打印debug日志    
  
      GumpSDK.getSettings().enableDebugLogging(true);
d3c7882c1   赵康   first commit:4.+
64
65
66
67
  *横竖屏控制,默认为横屏,参数为false即为竖屏   
      
      GumpSDK.getSettings().setScreenLandscape(true);   
      
7bbc228ed   赵康   fix error in links
68
  *设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明
9db6d7eb0   赵康   version4.2.0:upda...
69

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

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

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

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

d42a06680   赵康   remove wechat log...
197

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