From 6a217e5ca6da7e048994314a3e4518619ca0b213 Mon Sep 17 00:00:00 2001 From: King Date: Wed, 13 Jun 2018 11:43:05 +0800 Subject: [PATCH] version4.5.0 --- GameSDKDemo/build.gradle | 10 +- GameSDKDemo/src/main/AndroidManifest.xml | 9 +- .../java/com/gumptech/sdk/demo/MainActivity.java | 15 +- IntegrationGuide.md | 248 -------------------- README | 251 +++++++++++++++++++++ 5 files changed, 270 insertions(+), 263 deletions(-) delete mode 100644 IntegrationGuide.md create mode 100644 README diff --git a/GameSDKDemo/build.gradle b/GameSDKDemo/build.gradle index 8efd40d..d479f3f 100644 --- a/GameSDKDemo/build.gradle +++ b/GameSDKDemo/build.gradle @@ -34,7 +34,7 @@ repositories { } android { - compileSdkVersion 22 + compileSdkVersion 26 buildToolsVersion "27.0.3" signingConfigs { @@ -48,7 +48,7 @@ android { defaultConfig { minSdkVersion 14 - targetSdkVersion 22 + targetSdkVersion 26 versionCode 5 versionName "1.3" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" @@ -73,11 +73,11 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') testImplementation 'junit:junit:4.12' - implementation 'com.android.support:appcompat-v7:22.2.0' + implementation 'com.android.support:appcompat-v7:26.1.0' //微信 implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:5.1.4' //VK -// implementation 'com.gumptech:VKsdk:1.5.4' + implementation 'com.gumptech:VKsdk:1.5.4' // implementation project(':GameSDK') - implementation 'com.gumptech.sdk:GameSDK:4.4.0' + implementation 'com.gumptech.sdk:GameSDK:4.5.0' } diff --git a/GameSDKDemo/src/main/AndroidManifest.xml b/GameSDKDemo/src/main/AndroidManifest.xml index 53c0067..a3dede0 100644 --- a/GameSDKDemo/src/main/AndroidManifest.xml +++ b/GameSDKDemo/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ + android:targetSdkVersion="23"/> @@ -24,8 +24,7 @@ android:name="com.gumptech.sdk.demo.MainActivity" android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout" android:label="@string/app_name" - android:screenOrientation="landscape" - > + android:screenOrientation="portrait"> @@ -42,8 +41,8 @@ + android:theme="@android:style/Theme.Light.NoTitleBar" + android:launchMode="singleTask"> diff --git a/GameSDKDemo/src/main/java/com/gumptech/sdk/demo/MainActivity.java b/GameSDKDemo/src/main/java/com/gumptech/sdk/demo/MainActivity.java index 3f4213d..65238ba 100644 --- a/GameSDKDemo/src/main/java/com/gumptech/sdk/demo/MainActivity.java +++ b/GameSDKDemo/src/main/java/com/gumptech/sdk/demo/MainActivity.java @@ -57,10 +57,10 @@ public class MainActivity extends Activity implements PurchaseCallback { @Override public void onClick(View v) { Bundle payInfo = new Bundle(); - payInfo.putString("product", "test2"); + payInfo.putString("product", "wa2"); payInfo.putFloat("amount", 0.1f); payInfo.putString("extraInfo", "This is demo!"); - payInfo.putString("serverId", "100"); + payInfo.putString("serverId", "s1"); payInfo.putString("roleId", "100123"); payInfo.putString("sessionKey", gumpUser.getSessionKey().getToken()); GumpSDK.pay(MainActivity.this, payInfo, MainActivity.this); @@ -78,6 +78,8 @@ public class MainActivity extends Activity implements PurchaseCallback { GumpSDK.iap(MainActivity.this, payInfo, MainActivity.this); } }); + + GumpSDK.getSettings().setDebug(false); /** * 设置否是打印debug日志 */ @@ -95,7 +97,7 @@ public class MainActivity extends Activity implements PurchaseCallback { * 设置启用Wechat登录 * */ - GumpSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_WECHAT); +// GumpSDK.getSettings().requestThirdSupport(SDKSettings.THIRD_SUPPORT_WECHAT); /** * 设置启用google登录 @@ -123,8 +125,6 @@ public class MainActivity extends Activity implements PurchaseCallback { GumpSDK.setUserStateListener(new LoginStateListener() { @Override public void onLoginSuccess(GumpUser user) { -// ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); -// cm.setText(user.getSessionKey()); gumpUser = user; String userType = null; switch (user.getAccountType()) { @@ -174,6 +174,11 @@ public class MainActivity extends Activity implements PurchaseCallback { btnLoginOrLogout.setTag(0); userInfo.setText("User is logout"); } + + @Override + public void onPermissionDenied() { + + } }); /** * 初始化sdk diff --git a/IntegrationGuide.md b/IntegrationGuide.md deleted file mode 100644 index 1f76335..0000000 --- a/IntegrationGuide.md +++ /dev/null @@ -1,248 +0,0 @@ -# Gump SDK 4 for Android接入文档 - -V4.4.0 -2018年5月08日 - -## 版本概述 - -此版本为使用AndroidStudio开发的版本,一改eclipse的工程依赖方式,使用aar的方式提供sdk接入包,除功能外,相对上一版本没有继承关系,请按此文档描述接入. - -此SDK适用android4.0以上系统. - -## 第一章 接入指南 -### 1.依赖导入 -将aar添加到libs目录下,然后配置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() { - //用户登出 - - } - }); - -如上成功登录后收到的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 b/README new file mode 100644 index 0000000..12f8aea --- /dev/null +++ b/README @@ -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 -- 2.0.0