Commit 5553a3ffd4dd7f16c071b4f6c3fdf44c8d55ad8c
1 parent
e877dd7d02
Exists in
master
版本4.8.6
Showing 1 changed file with 160 additions and 128 deletions Side-by-side Diff
README.md
| 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 |