From 5553a3ffd4dd7f16c071b4f6c3fdf44c8d55ad8c Mon Sep 17 00:00:00 2001 From: kingzh Date: Thu, 6 Aug 2020 10:15:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9C=AC4.8.6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 288 ++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 160 insertions(+), 128 deletions(-) diff --git a/README.md b/README.md index 2c5c758..964c51b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ # Gump SDK 4 for Android接入文档 - -V4.8.0 -2020年01月15日 +V4.8.6 +2020年08月6日 ## 版本概述 @@ -15,181 +14,213 @@ V4.8.0 ### 1.依赖导入 配置gradle,以下为必须项 - repositories{ - maven{ - url "http://117.50.8.198:8081/nexus/content/repositories/sdk" - } - } - dependencies { - implementation 'com.gumptech.sdk:GameSDK:4.8.0' +```groovy +repositories{ + maven{ + url "http://117.50.8.198:8081/nexus/content/repositories/sdk" + } +} +dependencies { + implementation 'com.gumptech.sdk:GameSDK:4.8.6' + +} +``` - } - ### 2.修改AndroidManifest.xml文件 首先添加必要的权限,如下所示: - - - - - - +```xml + + + + + +``` + 其次注册相应的Activity,具体如下: - - - - - - - - - - - + android:theme="@style/Theme.Origin" //登录界面的主题,可选项:Theme.Origin\Theme.Orange\Theme.Blue\Theme.Pink + android:screenOrientation="behind" + android:windowSoftInputMode="stateAlwaysHidden|adjustPan"> + + + + + + + + + +``` + ### 3.向Gump平台索要游戏ID(AppID),完成代码接入 正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入 *是否打印debug日志 - GameSDK.getSettings().enableDebugLogging(true); - +```java +GameSDK.getSettings().enableDebugLogging(true); +``` + *设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明 - GameSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_*); +```java +GameSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_*); +``` #### 1.调用GameSDK前需要执行初始化。 若不需要分渠道 - GameSDK.init(Context,Appid); +```java +GameSDK.init(Context,Appid); +``` 如果需要定义渠道,必须使用如下方法 - GameSDK.init(Context,Appid,ChannelId); +```java +GameSDK.init(Context,Appid,ChannelId); +``` #### 2.调用GameSDK的登录方法,将执行登录流程,需要一个Activity实例作参数 - GameSDK.login(Activity); +```java +GameSDK.login(Activity); +``` 在此之前,开发者需要注册用户状态监听以接受用户的登录/登出通知,通常如下: - GameSDK.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() { - //用户登出 - - } - @Override - public void onPermissionDenied(String[] deniedPermissions) { - //用户未授予权限,参数为没有获取的权限 - } - }); - +```java +GameSDK.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() { + //用户登出 + + } + @Override + public void onPermissionDenied(String[] deniedPermissions) { + //用户未授予权限,参数为没有获取的权限 + } + }); +``` + 如上成功登录后收到的GumpUser对象包含以下信息 - gumpUser.getUid();//获取用户的userid,此Id标识唯一用户! - gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取 - gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法 +```java +gumpUser.getUid();//获取用户的userid,此Id标识唯一用户! +gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取 +gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法 +``` #### 3.支付功能 调用支付前需先判断支付状态,根据状态调用支付方法 - GameSDK.iapUsable(Activity, serverId, roleId, new ResultCallback() { - @Override - public void onResult(boolean result) { - if(result){ - //调用GameSDK.iap - }else{ - //调用GameSDK.pay - } - } - }); +```java +GameSDK.iapUsable(Activity, serverId, roleId, new ResultCallback() { + @Override + public void onResult(boolean result) { + if(result){ + //调用GameSDK.iap + }else{ + //调用GameSDK.pay + } + } + }); +``` 1)调用GameSDK.pay - Bundle payInfo = new Bundle(); - payInfo.putString("product", "元宝"); - payInfo.putFloat("amount", 40.0f); - payInfo.putString("extraInfo", "This is demo!"); - payInfo.putString("serverId", "B4003"); - payInfo.putString("roleId", "10010"); - payInfo.putString("currency","currency"); - GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback); +```java +Bundle payInfo = new Bundle(); +payInfo.putString("product", "元宝"); +payInfo.putFloat("amount", 40.0f); +payInfo.putString("extraInfo", "This is demo!"); +payInfo.putString("serverId", "B4003"); +payInfo.putString("roleId", "10010"); +payInfo.putString("currency","currency"); +GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback); +``` 调用pay方法时,必须穿入一个bundle对象,包含如上字段,所有字段必须全部包含 2)IAP支付 - 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); - +```java +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个方法 - @Override - public void onPurchaseCompleted() { - Log.i(TAG,"purchase completed"); - } +```java +@Override +public void onPurchaseCompleted() { + Log.i(TAG,"purchase completed"); +} - @Override - public void onPurchaseError(int code, String msg) { - Log.i(TAG,"purchase error"); - } +@Override +public void onPurchaseError(int code, String msg) { + Log.i(TAG,"purchase error"); +} + +@Override +public void onPurchaseCanceled() { + Log.i(TAG,"purchase canceled"); +} +``` - @Override - public void onPurchaseCanceled() { - Log.i(TAG,"purchase canceled"); - } - #### 4.注销登录 - GameSDK.logout(Activity); +```java +GameSDK.logout(Activity); +``` 当此方法调用后,用户退出登录,并会通过LoginStateListener接口通知调用程序!为了便于用户切换登录账户,请在游戏内提供用户注销的触发按钮 #### 5.运营开关接口,若需要接入,会有我方运营人员提出需求,否则不需要接入(若对此接口不知所云,即可认为不需要接入,请自行忽略) - - GameSDK.inspectRiskLevel(this, new ResultCallback() { - @Override - public void onResult(boolean result) { - Log.i(TAG,result?"There is some risks":"Nothing is risk"); - } - }); - + +```java +GameSDK.inspectRiskLevel(this, new ResultCallback() { + @Override + public void onResult(boolean result) { + Log.i(TAG,result?"There is some risks":"Nothing is risk"); + } + }); +``` + ## 第二章 常量字段与代码 ### 1.第三方登录平台(third_plat) | 常量字段 | 说明 | @@ -221,6 +252,7 @@ V4.8.0 -keep public class com.android.vending.licensing.ILicensingService -keep class com.gump.game.sdk.view.* {*;} -keep class com.gump.game.sdk.web.* {*;} - - + + +​ 使得混淆的时候不会影响SDK的命名空间。 \ No newline at end of file -- 2.0.0