diff --git a/README b/README deleted file mode 100644 index 12f8aea..0000000 --- a/README +++ /dev/null @@ -1,251 +0,0 @@ -# Gump SDK 4 for Android接入文档 - -V4.5.0 -2018年6月13日 - -## 版本概述 - -此版本为使用AndroidStudio开发的版本,一改eclipse的工程依赖方式,使用aar的方式提供sdk接入包,除功能外,相对上一版本没有继承关系,请按此文档描述接入. - -此SDK适用android4.0以上系统. - -## 第一章 接入指南 -### 1.依赖导入 -配置gradle,以下为必须项 - - repositories{ - maven{ - url "http://117.50.8.198:8081/nexus/content/repositories/sdk" - } - } - dependencies { - implementation 'com.gumptech.sdk:GameSDK:4.4.0' - } - - -可选接入vk登录时,需要导入vkLibrary工程,并配置模块依赖,如下 - - implementation 'com.gumptech:VKsdk:1.5.4' - -选择接入微信登录时,需要增加微信依赖,如下: - - implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:5.1.4' - -### 2.修改AndroidManifest.xml文件 -首先添加必要的权限,如下所示: - - - - - - - - - -其次注册相应的Activity,具体如下: - - - - - - - - - - - - - - - - - - - - - - -### 3.向Gump平台索要游戏ID(AppID),完成代码接入 -正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入 - -*是否打印debug日志 - - GumpSDK.getSettings().enableDebugLogging(true); - -*横竖屏控制,默认为横屏,参数为false即为竖屏 - - GumpSDK.getSettings().setScreenLandscape(true); - -*设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明 - - GumpSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_*); - -*若要使用V4版支付请设置 - - GumpSDK.getSettings().setPaymentVersion(PaymentVersion.V4); - -#### 1.调用GumpSDK前需要执行初始化。 - -若不需要分渠道 - - GumpSDK.init(Context,Appid, Appkey,InitializeCallback); -如果需要定义渠道,必须使用如下方法 - - GumpSDK.init(Context,Appid, Appkey,ChannelId,InitializeCallback); - -InitializeCallback为初始化回调接口,此接口只有一个回调方法initComplete(int result) result标识是否初始化成功,当result等于GumpSDK.CODE.OK时为成功,其他为失败 - -#### 2.调用GumpSDK的开始方法,将执行登录流程,需要一个Activity实例作参数 - - 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() { - //用户登出 - - } - @Override - public void onPermissionDenied() { - //用户拒绝授予权限 - } - }); - -如上成功登录后收到的GumpUser对象包含以下信息 - - gumpUser.getUid();//获取用户的userid,此Id标识唯一用户! - gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取 - gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法 - -***注意:若需要使用微信登录,需要在packageName.wxapi下增加一个名为WXEntryActivity并继承com.gumptech.sdk.WXCallbackActivity的Activity,并参考AndroidManifest.xml设置的说明,做相应的配置,packageName为应用的包名,此Activity不须任何实现。*** - -***以GumpSDKDemo为例,包名为com.gumptech.sdk.demo,则WXEntryActivity的完整包路径为:com.gumptech.sdk.demo.wxapi.WXEntryActivity*** - -#### 3.支付功能 -1)使用gump通行证登录,其中除nick外所有参数为必传参数 - - 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); -调用pay方法时,必须穿入一个bundle对象,包含如上字段,除nick外所有字段必须全部包含,其中sessionKey为登录时返回的sessionKey - - -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); - -3)PurchaseCallback为支付状态回调接口,此接口含有3个方法 - - @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"); - } - -#### 4.注销登录 - - GumpSDK.logout(Activity); -当此方法调用后,用户退出登录,并会通过LoginStateListener接口通知调用程序!为了便于用户切换登录账户,请在游戏内提供用户注销的触发按钮 -#### 5.运营开关接口,若需要接入,会有我方运营人员提出需求,否则不需要接入(若对此接口不知所云,即可认为不需要接入,请自行忽略) - - GumpSDK.checkRisk(this, new ResultCallback() { - @Override - public void onResult(boolean result) { - Log.i(TAG,result?"There is some risks":"Nothing is risk"); - } - }); - -## 第二章 常量字段与代码 -### 1.第三方登录平台(third_plat) - | 常量字段 | 说明 | - |--------------------------------|--------------| - |SDKSettings.THIRD_SUPPORT_FB |Facebook登录 | - |SDKSettings.THIRD_SUPPORT_GOOGLE|Google登录 | - |SDKSettings.THIRD_SUPPORT_LINE |Line登录 | - |SDKSettings.THIRD_SUPPORT_VK |VK登录 | - |SDKSettings.THIRD_SUPPORT_WECHAT|微信登录 | -### 2.登录账户类型 - | 常量字段 | 说明 | - |-------------------------------------|-------------| - |GumpPreference.ACCOUNT_TYPE_FB |Facebook用户 | - |GumpPreference.ACCOUNT_TYPE_REG |Gump注册用户 | - |GumpPreference.ACCOUNT_TYPE_QUICK_REG|快速注册用户 | - |GumpPreference.ACCOUNT_TYPE_GOOGLE |Google用户 | - |GumpPreference.ACCOUNT_TYPE_LINE |Line用户 | - |GumpPreference.ACCOUNT_TYPE_VK |VK用户 | - |GumpPreference.ACCOUNT_TYPE_WECHAT |微信用户 | - -## 第三章 常见问题 -### 问题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的命名空间。 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..12f8aea --- /dev/null +++ b/README.md @@ -0,0 +1,251 @@ +# Gump SDK 4 for Android接入文档 + +V4.5.0 +2018年6月13日 + +## 版本概述 + +此版本为使用AndroidStudio开发的版本,一改eclipse的工程依赖方式,使用aar的方式提供sdk接入包,除功能外,相对上一版本没有继承关系,请按此文档描述接入. + +此SDK适用android4.0以上系统. + +## 第一章 接入指南 +### 1.依赖导入 +配置gradle,以下为必须项 + + repositories{ + maven{ + url "http://117.50.8.198:8081/nexus/content/repositories/sdk" + } + } + dependencies { + implementation 'com.gumptech.sdk:GameSDK:4.4.0' + } + + +可选接入vk登录时,需要导入vkLibrary工程,并配置模块依赖,如下 + + implementation 'com.gumptech:VKsdk:1.5.4' + +选择接入微信登录时,需要增加微信依赖,如下: + + implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:5.1.4' + +### 2.修改AndroidManifest.xml文件 +首先添加必要的权限,如下所示: + + + + + + + + + +其次注册相应的Activity,具体如下: + + + + + + + + + + + + + + + + + + + + + + +### 3.向Gump平台索要游戏ID(AppID),完成代码接入 +正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入 + +*是否打印debug日志 + + GumpSDK.getSettings().enableDebugLogging(true); + +*横竖屏控制,默认为横屏,参数为false即为竖屏 + + GumpSDK.getSettings().setScreenLandscape(true); + +*设置需要启用的第三方登录,参数可选类型见第二章:[第三方登录平台](http://repository.gumptech.com:81/document/gamesdk4-android/blob/master/IntegrationGuide.md#1-third_plat) 字段说明 + + GumpSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_*); + +*若要使用V4版支付请设置 + + GumpSDK.getSettings().setPaymentVersion(PaymentVersion.V4); + +#### 1.调用GumpSDK前需要执行初始化。 + +若不需要分渠道 + + GumpSDK.init(Context,Appid, Appkey,InitializeCallback); +如果需要定义渠道,必须使用如下方法 + + GumpSDK.init(Context,Appid, Appkey,ChannelId,InitializeCallback); + +InitializeCallback为初始化回调接口,此接口只有一个回调方法initComplete(int result) result标识是否初始化成功,当result等于GumpSDK.CODE.OK时为成功,其他为失败 + +#### 2.调用GumpSDK的开始方法,将执行登录流程,需要一个Activity实例作参数 + + 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() { + //用户登出 + + } + @Override + public void onPermissionDenied() { + //用户拒绝授予权限 + } + }); + +如上成功登录后收到的GumpUser对象包含以下信息 + + gumpUser.getUid();//获取用户的userid,此Id标识唯一用户! + gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取 + gumpUser.getSessionKey();//登录的sessionKey对象,获取sessionKey字符串请使用此对象的getToken()方法 + +***注意:若需要使用微信登录,需要在packageName.wxapi下增加一个名为WXEntryActivity并继承com.gumptech.sdk.WXCallbackActivity的Activity,并参考AndroidManifest.xml设置的说明,做相应的配置,packageName为应用的包名,此Activity不须任何实现。*** + +***以GumpSDKDemo为例,包名为com.gumptech.sdk.demo,则WXEntryActivity的完整包路径为:com.gumptech.sdk.demo.wxapi.WXEntryActivity*** + +#### 3.支付功能 +1)使用gump通行证登录,其中除nick外所有参数为必传参数 + + 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); +调用pay方法时,必须穿入一个bundle对象,包含如上字段,除nick外所有字段必须全部包含,其中sessionKey为登录时返回的sessionKey + + +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); + +3)PurchaseCallback为支付状态回调接口,此接口含有3个方法 + + @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"); + } + +#### 4.注销登录 + + GumpSDK.logout(Activity); +当此方法调用后,用户退出登录,并会通过LoginStateListener接口通知调用程序!为了便于用户切换登录账户,请在游戏内提供用户注销的触发按钮 +#### 5.运营开关接口,若需要接入,会有我方运营人员提出需求,否则不需要接入(若对此接口不知所云,即可认为不需要接入,请自行忽略) + + GumpSDK.checkRisk(this, new ResultCallback() { + @Override + public void onResult(boolean result) { + Log.i(TAG,result?"There is some risks":"Nothing is risk"); + } + }); + +## 第二章 常量字段与代码 +### 1.第三方登录平台(third_plat) + | 常量字段 | 说明 | + |--------------------------------|--------------| + |SDKSettings.THIRD_SUPPORT_FB |Facebook登录 | + |SDKSettings.THIRD_SUPPORT_GOOGLE|Google登录 | + |SDKSettings.THIRD_SUPPORT_LINE |Line登录 | + |SDKSettings.THIRD_SUPPORT_VK |VK登录 | + |SDKSettings.THIRD_SUPPORT_WECHAT|微信登录 | +### 2.登录账户类型 + | 常量字段 | 说明 | + |-------------------------------------|-------------| + |GumpPreference.ACCOUNT_TYPE_FB |Facebook用户 | + |GumpPreference.ACCOUNT_TYPE_REG |Gump注册用户 | + |GumpPreference.ACCOUNT_TYPE_QUICK_REG|快速注册用户 | + |GumpPreference.ACCOUNT_TYPE_GOOGLE |Google用户 | + |GumpPreference.ACCOUNT_TYPE_LINE |Line用户 | + |GumpPreference.ACCOUNT_TYPE_VK |VK用户 | + |GumpPreference.ACCOUNT_TYPE_WECHAT |微信用户 | + +## 第三章 常见问题 +### 问题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的命名空间。 \ No newline at end of file