Commit 5553a3ffd4dd7f16c071b4f6c3fdf44c8d55ad8c

Authored by kingzh
1 parent e877dd7d02
Exists in master

版本4.8.6

Showing 1 changed file with 160 additions and 128 deletions Side-by-side Diff

1 1 # Gump SDK 4 for Android接入文档
2 2  
3   -
4   -V4.8.0
5   -2020年01月15日
  3 +V4.8.6
  4 +2020年08月6日
6 5  
7 6  
8 7 ## 版本概述
... ... @@ -15,181 +14,213 @@ V4.8.0
15 14 ### 1.依赖导入
16 15 配置gradle,以下为必须项
17 16  
18   - repositories{
19   - maven{
20   - url "http://117.50.8.198:8081/nexus/content/repositories/sdk"
21   - }
22   - }
23   - dependencies {
24   - implementation 'com.gumptech.sdk:GameSDK:4.8.0'
  17 +```groovy
  18 +repositories{
  19 + maven{
  20 + url "http://117.50.8.198:8081/nexus/content/repositories/sdk"
  21 + }
  22 +}
  23 +dependencies {
  24 + implementation 'com.gumptech.sdk:GameSDK:4.8.6'
  25 +
  26 +}
  27 +```
25 28  
26   - }
27   -
28 29  
29 30 ### 2.修改AndroidManifest.xml文件
30 31 首先添加必要的权限,如下所示:
31 32  
32   - <uses-permission android:name="android.permission.INTERNET" />
33   - <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
34   - <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
35   - <!-- VERY IMPORTANT! Don't forget this permission, or in-app billing won't work. -->
36   - <uses-permission android:name="com.android.vending.BILLING" />
37   -
  33 +```xml
  34 +<uses-permission android:name="android.permission.INTERNET" />
  35 +<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  36 +<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  37 +<!-- VERY IMPORTANT! Don't forget this permission, or in-app billing won't work. -->
  38 +<uses-permission android:name="com.android.vending.BILLING" />
  39 +```
  40 +
38 41 其次注册相应的Activity,具体如下:
39 42  
40   - <activity
41   - android:name="com.gump.game.sdk.PassportActivity"
42   - android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
43   - android:launchMode="singleTask"
44   - android:theme="@style/Theme.Origin" //登录界面的主题,可选项:Theme.Origin\Theme.Orange\Theme.Blue\Theme.Pink
45   - android:screenOrientation="behind"
46   - android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
47   - </activity>
48   - <activity
49   - android:name="com.gump.game.sdk.RechargeActivity"
  43 +```xml
  44 +<activity
  45 + android:name="com.gump.game.sdk.PassportActivity"
50 46 android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
51 47 android:launchMode="singleTask"
52   - android:screenOrientation="behind"
53   - android:theme="@style/Theme.Translucent" >
54   - <intent-filter>
55   - <category android:name="android.intent.category.DEFAULT" />
56   - <action android:name="android.intent.action.VIEW" />
57   - <category android:name="android.intent.category.BROWSABLE" />
58   - <data
59   - android:host="com.gump.sdk"
60   - android:scheme="gump+游戏的appId" />
61   - </intent-filter>
62   - </activity>
63   -
  48 + android:theme="@style/Theme.Origin" //登录界面的主题,可选项:Theme.Origin\Theme.Orange\Theme.Blue\Theme.Pink
  49 + android:screenOrientation="behind"
  50 + android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
  51 +</activity>
  52 +<activity
  53 + android:name="com.gump.game.sdk.RechargeActivity"
  54 + android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
  55 + android:launchMode="singleTask"
  56 + android:screenOrientation="behind"
  57 + android:theme="@style/Theme.Translucent" >
  58 + <intent-filter>
  59 + <category android:name="android.intent.category.DEFAULT" />
  60 + <action android:name="android.intent.action.VIEW" />
  61 + <category android:name="android.intent.category.BROWSABLE" />
  62 + <data
  63 + android:host="com.gump.sdk"
  64 + android:scheme="gump+游戏的appId" />
  65 + </intent-filter>
  66 +</activity>
  67 +```
  68 +
64 69 ### 3.向Gump平台索要游戏ID(AppID),完成代码接入
65 70 正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入
66 71  
67 72 *是否打印debug日志
68 73  
69   - GameSDK.getSettings().enableDebugLogging(true);
70   -
  74 +```java
  75 +GameSDK.getSettings().enableDebugLogging(true);
  76 +```
  77 +
71 78 *设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明
72 79  
73   - GameSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_*);
  80 +```java
  81 +GameSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_*);
  82 +```
74 83  
75 84  
76 85 #### 1.调用GameSDK前需要执行初始化。
77 86  
78 87 若不需要分渠道
79 88  
80   - GameSDK.init(Context,Appid);
  89 +```java
  90 +GameSDK.init(Context,Appid);
  91 +```
81 92 如果需要定义渠道,必须使用如下方法
82 93  
83   - GameSDK.init(Context,Appid,ChannelId);
  94 +```java
  95 +GameSDK.init(Context,Appid,ChannelId);
  96 +```
84 97  
85 98  
86 99 #### 2.调用GameSDK的登录方法,将执行登录流程,需要一个Activity实例作参数
87 100  
88   - GameSDK.login(Activity);
  101 +```java
  102 +GameSDK.login(Activity);
  103 +```
89 104 在此之前,开发者需要注册用户状态监听以接受用户的登录/登出通知,通常如下:
90 105  
91   - GameSDK.setUserStateListener(new LoginStateListener() {
92   - @Override
93   - public void onLoginSuccess(GumpUser gumpUser) {
94   - //登录成功,用户信息包含在GumpUser对象里
95   - }
96   -
97   - @Override
98   - public void onLoginFailed(int code, String msg) {
99   - //登录出错,根据错误码和信息判断错误类型
100   - Toast.makeText(MainActivity.this, "Login failed:code="+code+",message="+msg, Toast.LENGTH_SHORT).show();
101   - }
102   -
103   - @Override
104   - public void onLoginCanceled() {
105   - //用户取消登录
106   - Toast.makeText(MainActivity.this, "operate be canceled", Toast.LENGTH_SHORT).show();
107   - }
108   -
109   - @Override
110   - public void onLogout() {
111   - //用户登出
112   -
113   - }
114   - @Override
115   - public void onPermissionDenied(String[] deniedPermissions) {
116   - //用户未授予权限,参数为没有获取的权限
117   - }
118   - });
119   -
  106 +```java
  107 +GameSDK.setUserStateListener(new LoginStateListener() {
  108 + @Override
  109 + public void onLoginSuccess(GumpUser gumpUser) {
  110 + //登录成功,用户信息包含在GumpUser对象里
  111 + }
  112 +
  113 + @Override
  114 + public void onLoginFailed(int code, String msg) {
  115 + //登录出错,根据错误码和信息判断错误类型
  116 + Toast.makeText(MainActivity.this, "Login failed:code="+code+",message="+msg, Toast.LENGTH_SHORT).show();
  117 + }
  118 +
  119 + @Override
  120 + public void onLoginCanceled() {
  121 + //用户取消登录
  122 + Toast.makeText(MainActivity.this, "operate be canceled", Toast.LENGTH_SHORT).show();
  123 + }
  124 +
  125 + @Override
  126 + public void onLogout() {
  127 + //用户登出
  128 +
  129 + }
  130 + @Override
  131 + public void onPermissionDenied(String[] deniedPermissions) {
  132 + //用户未授予权限,参数为没有获取的权限
  133 + }
  134 + });
  135 +```
  136 +
120 137 如上成功登录后收到的GumpUser对象包含以下信息
121 138  
122   - gumpUser.getUid();//获取用户的userid,此Id标识唯一用户!
123   - gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取
124   - gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法
  139 +```java
  140 +gumpUser.getUid();//获取用户的userid,此Id标识唯一用户!
  141 +gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取
  142 +gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法
  143 +```
125 144  
126 145 #### 3.支付功能
127 146 调用支付前需先判断支付状态,根据状态调用支付方法
128 147  
129   - GameSDK.iapUsable(Activity, serverId, roleId, new ResultCallback() {
130   - @Override
131   - public void onResult(boolean result) {
132   - if(result){
133   - //调用GameSDK.iap
134   - }else{
135   - //调用GameSDK.pay
136   - }
137   - }
138   - });
  148 +```java
  149 +GameSDK.iapUsable(Activity, serverId, roleId, new ResultCallback() {
  150 + @Override
  151 + public void onResult(boolean result) {
  152 + if(result){
  153 + //调用GameSDK.iap
  154 + }else{
  155 + //调用GameSDK.pay
  156 + }
  157 + }
  158 + });
  159 +```
139 160  
140 161 1)调用GameSDK.pay
141 162  
142   - Bundle payInfo = new Bundle();
143   - payInfo.putString("product", "元宝");
144   - payInfo.putFloat("amount", 40.0f);
145   - payInfo.putString("extraInfo", "This is demo!");
146   - payInfo.putString("serverId", "B4003");
147   - payInfo.putString("roleId", "10010");
148   - payInfo.putString("currency","currency");
149   - GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback);
  163 +```java
  164 +Bundle payInfo = new Bundle();
  165 +payInfo.putString("product", "元宝");
  166 +payInfo.putFloat("amount", 40.0f);
  167 +payInfo.putString("extraInfo", "This is demo!");
  168 +payInfo.putString("serverId", "B4003");
  169 +payInfo.putString("roleId", "10010");
  170 +payInfo.putString("currency","currency");
  171 +GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback);
  172 +```
150 173 调用pay方法时,必须穿入一个bundle对象,包含如上字段,所有字段必须全部包含
151 174  
152 175  
153 176 2)IAP支付
154 177  
155   - Bundle payInfo = new Bundle();
156   - payInfo.putString("product", "gp_skuId");
157   - payInfo.putFloat("amount", 0.1f);
158   - payInfo.putString("extraInfo", "This is demo!");
159   - payInfo.putString("serverId", "100");
160   - payInfo.putString("roleId","100123");
161   - GumpSDK.iap(MainActivity.this, payInfo, PurchaseCallback);
162   -
  178 +```java
  179 +Bundle payInfo = new Bundle();
  180 +payInfo.putString("product", "gp_skuId");
  181 +payInfo.putFloat("amount", 0.1f);
  182 +payInfo.putString("extraInfo", "This is demo!");
  183 +payInfo.putString("serverId", "100");
  184 +payInfo.putString("roleId","100123");
  185 +GumpSDK.iap(MainActivity.this, payInfo, PurchaseCallback);
  186 +```
  187 +
163 188 3)PurchaseCallback为支付状态回调接口,此接口含有3个方法
164 189  
165   - @Override
166   - public void onPurchaseCompleted() {
167   - Log.i(TAG,"purchase completed");
168   - }
  190 +```java
  191 +@Override
  192 +public void onPurchaseCompleted() {
  193 + Log.i(TAG,"purchase completed");
  194 +}
169 195  
170   - @Override
171   - public void onPurchaseError(int code, String msg) {
172   - Log.i(TAG,"purchase error");
173   - }
  196 +@Override
  197 +public void onPurchaseError(int code, String msg) {
  198 + Log.i(TAG,"purchase error");
  199 +}
  200 +
  201 +@Override
  202 +public void onPurchaseCanceled() {
  203 + Log.i(TAG,"purchase canceled");
  204 +}
  205 +```
174 206  
175   - @Override
176   - public void onPurchaseCanceled() {
177   - Log.i(TAG,"purchase canceled");
178   - }
179   -
180 207 #### 4.注销登录
181 208  
182   - GameSDK.logout(Activity);
  209 +```java
  210 +GameSDK.logout(Activity);
  211 +```
183 212 当此方法调用后,用户退出登录,并会通过LoginStateListener接口通知调用程序!为了便于用户切换登录账户,请在游戏内提供用户注销的触发按钮
184 213 #### 5.运营开关接口,若需要接入,会有我方运营人员提出需求,否则不需要接入(若对此接口不知所云,即可认为不需要接入,请自行忽略)
185   -
186   - GameSDK.inspectRiskLevel(this, new ResultCallback() {
187   - @Override
188   - public void onResult(boolean result) {
189   - Log.i(TAG,result?"There is some risks":"Nothing is risk");
190   - }
191   - });
192   -
  214 +
  215 +```java
  216 +GameSDK.inspectRiskLevel(this, new ResultCallback() {
  217 + @Override
  218 + public void onResult(boolean result) {
  219 + Log.i(TAG,result?"There is some risks":"Nothing is risk");
  220 + }
  221 + });
  222 +```
  223 +
193 224 ## 第二章 常量字段与代码
194 225 ### 1.第三方登录平台(third_plat)
195 226 | 常量字段 | 说明 |
... ... @@ -221,6 +252,7 @@ V4.8.0
221 252 -keep public class com.android.vending.licensing.ILicensingService
222 253 -keep class com.gump.game.sdk.view.* {*;}
223 254 -keep class com.gump.game.sdk.web.* {*;}
224   -
225   -
  255 +
  256 +
  257 +​
226 258 使得混淆的时候不会影响SDK的命名空间。
227 259 \ No newline at end of file