From 82eb378ad802eed9b4d32f996154603026751d6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BA=B7?= Date: Wed, 29 Jul 2015 11:27:14 +0800 Subject: [PATCH] =?UTF-8?q?3.2.0=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/AndroidDocument.md | 114 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 79 insertions(+), 35 deletions(-) diff --git a/doc/AndroidDocument.md b/doc/AndroidDocument.md index 6046dc4..cdf8ad4 100644 --- a/doc/AndroidDocument.md +++ b/doc/AndroidDocument.md @@ -86,46 +86,77 @@ Help==>About Eclips点击Android对应的图标就可以查看版本了. android:theme="@android:style/Theme.Translucent.NoTitleBar" > + android:name="com.gumptech.sdk.ExchangeWindow" + android:configChanges="orientation|screenLayout" + android:theme="@style/ex_win" > + #### 2、 向Gump平台索要游戏ID(GID),完成代码接入 -1.调用GumpSDK前需要执行初始化。 -若不需要分渠道 - - GumpSDK.init(Context,Appid, Appkey); -如果需要定义渠道,必须使用如下方法 - - GumpSDK.init(Context,Appid, Appkey,ChannelId); +正式开始接入逻辑代码前,先介绍下一些附加配置,以方便代码接入 *gump logo的显示控制方法,此方法参数指定是否显示GumpLogo GumpSDK.setShowLogo(boolean); *横竖屏控制,默认为横屏,参数为false即为竖屏 GumpSDK.setScreenLandscape(true); +*debug模式设置 + + GumpSDK.setDebugState(true); +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); -开发者需要在调用的Activity里重写onActivityResult方法以接受用户的登录结果,通常如下: - - //登录请求返回结果 - if (requestCode == GumpSDK.LOGIN_REQUEST_CODE) { - if (resultCode == RESULT_OK) { - String uid = data.getIntExtra("userId", -1); - int accountType = data.getIntExtra("accountType", -1); - String sessionkey = data.getStringExtra("sessionKey"); - - } else if (resultCode == RESULT_CANCELED) { - Toast.makeText(this, "operate be canceled", Toast.LENGTH_SHORT).show(); - } - } +在此之前,开发者需要注册用户状态监听以接受用户的登录/登出通知,通常如下: + + 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() { + //用户登出 + + } + }); -如上将收到成功登录用的userid,此Id标识唯一用户! +如上成功登录后收到的GumpUser对象包含以下信息 + + gumpUser.getUid();//获取用户的userid,此Id标识唯一用户! + gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取 + gumpUser.getSessionKey();//登录的sesionKey + 3.支付功能 1)使用gump通行证登录,其中serverId为必传参数 @@ -137,7 +168,7 @@ Help==>About Eclips点击Android对应的图标就可以查看版本了. payInfo.putString("extraInfo", "This is demo!"); payInfo.putString("serverId", "B4003"); payInfo.putString("roleId", "10010"); - GumpSDK.pay(MainActivity.this, payInfo); + GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback); 调用pay方法时,必须穿入一个bundle对象,包含如上字段,除serverId外可以设置值为空,但是字段必须全部包含 2)未使用gump通行证登录,需要传入用户id,serverId为必传参数 @@ -148,29 +179,42 @@ Help==>About Eclips点击Android对应的图标就可以查看版本了. payInfo.putString("extraInfo", "This is demo!"); payInfo.putString("serverId", "B4003"); payInfo.putString("roleId", "10010"); - GumpSDK.pay(MainActivity.this, payInfo,"1021"); + GumpSDK.pay(MainActivity.this, payInfo,"1021",PurchaseCallback); + +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"); + } + 5.注销登录 - GumpSDK.logout(Activity,GumpSDK.Callback); -当此方法调用后,用户退出登录,并会通过callback接口通知调用程序! + GumpSDK.logout(Activity); +当此方法调用后,用户退出登录,并会通过LoginStateListener接口通知调用程序! ## 第二章 常见问题 ### 问题1: 如何避免混淆对SDK的影响? 解答:有些开发者对接入了SDK的程序进行混淆时,有可能会覆盖某些java 类,导致SDK无法正常工作,解决方法如下: Ø 请开发者在混淆配置文件proguard.cfg或proguard-project.txt的最后加上 - -keepattributes *Annotation* + -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.GumpSDK$Callback{ - void onLogout(); - } - -keep class com.gumptech.sdk.GumpPreference{ - public static final ; - } + 使得混淆的时候不会影响SDK的命名空间。 ### 问题2:后台已经配置ok的情况下,支付列表仍然为空或登录总是出错? -- 2.0.0