Commit 82eb378ad802eed9b4d32f996154603026751d6c

Authored by 赵康
1 parent d95d6c5fd8
Exists in master

3.2.0文档更新

Showing 1 changed file with 79 additions and 35 deletions Side-by-side Diff

doc/AndroidDocument.md
... ... @@ -86,46 +86,77 @@ Help==>About Eclips点击Android对应的图标就可以查看版本了.
86 86 android:theme="@android:style/Theme.Translucent.NoTitleBar" >
87 87 </activity>
88 88 <activity
89   - android:name="com.gumptech.sdk.ExchangeWindow"
90   - android:configChanges="orientation|screenLayout"
91   - android:theme="@style/ex_win" >
  89 + android:name="com.gumptech.sdk.ExchangeWindow"
  90 + android:configChanges="orientation|screenLayout"
  91 + android:theme="@style/ex_win" >
92 92 </activity>
93 93 <service android:name="com.gumptech.sdk.PushService" >
94 94 </service>
  95 + <activity
  96 + android:name="com.facebook.FacebookActivity"
  97 + android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
  98 + android:label="@string/app_name"
  99 + android:theme="@android:style/Theme.Translucent.NoTitleBar" />
95 100  
96 101  
97 102 #### 2、 向Gump平台索要游戏ID(GID),完成代码接入
98   -1.调用GumpSDK前需要执行初始化。
99   -若不需要分渠道
100   -
101   - GumpSDK.init(Context,Appid, Appkey);
102   -如果需要定义渠道,必须使用如下方法
103   -
104   - GumpSDK.init(Context,Appid, Appkey,ChannelId);
  103 +正式开始接入逻辑代码前,先介绍下一些附加配置,以方便代码接入
105 104 *gump logo的显示控制方法,此方法参数指定是否显示GumpLogo
106 105  
107 106 GumpSDK.setShowLogo(boolean);
108 107 *横竖屏控制,默认为横屏,参数为false即为竖屏
109 108  
110 109 GumpSDK.setScreenLandscape(true);
  110 +*debug模式设置
  111 +
  112 + GumpSDK.setDebugState(true);
  113 +1.调用GumpSDK前需要执行初始化。
  114 +
  115 +若不需要分渠道
  116 +
  117 + GumpSDK.init(Context,Appid, Appkey,InitializeCallback);
  118 +如果需要定义渠道,必须使用如下方法
  119 +
  120 + GumpSDK.init(Context,Appid, Appkey,ChannelId,InitializeCallback);
  121 +
  122 +InitializeCallback为初始化回调接口,此接口只有一个回调方法initComplete(int result) result标识是否初始化成功,当result等于GumpSDK.CODE.OK时为成功,其他为失败
  123 +
111 124 2.调用GumpSDK的开始方法,将执行登录流程,需要一个Activity实例作参数
112 125  
113 126 GumpSDK.start(Activity);
114   -开发者需要在调用的Activity里重写onActivityResult方法以接受用户的登录结果,通常如下:
115   -
116   - //登录请求返回结果
117   - if (requestCode == GumpSDK.LOGIN_REQUEST_CODE) {
118   - if (resultCode == RESULT_OK) {
119   - String uid = data.getIntExtra("userId", -1);
120   - int accountType = data.getIntExtra("accountType", -1);
121   - String sessionkey = data.getStringExtra("sessionKey");
122   -
123   - } else if (resultCode == RESULT_CANCELED) {
124   - Toast.makeText(this, "operate be canceled", Toast.LENGTH_SHORT).show();
125   - }
126   - }
  127 +在此之前,开发者需要注册用户状态监听以接受用户的登录/登出通知,通常如下:
  128 +
  129 + GumpSDK.setUserStateListener(new LoginStateListener() {
  130 + @Override
  131 + public void onLoginSuccess(GumpUser gumpUser) {
  132 + //登录成功,用户信息包含在GumpUser对象里
  133 + }
  134 +
  135 + @Override
  136 + public void onLoginFailed(int code, String msg) {
  137 + //登录出错,根据错误码和信息判断错误类型
  138 + Toast.makeText(MainActivity.this, "Login failed:code="+code+",message="+msg, Toast.LENGTH_SHORT).show();
  139 + }
  140 +
  141 + @Override
  142 + public void onLoginCanceled() {
  143 + //用户取消登录
  144 + Toast.makeText(MainActivity.this, "operate be canceled", Toast.LENGTH_SHORT).show();
  145 + }
  146 +
  147 + @Override
  148 + public void onLogout() {
  149 + //用户登出
  150 +
  151 + }
  152 + });
127 153  
128   -如上将收到成功登录用的userid,此Id标识唯一用户!
  154 +如上成功登录后收到的GumpUser对象包含以下信息
  155 +
  156 + gumpUser.getUid();//获取用户的userid,此Id标识唯一用户!
  157 + gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取
  158 + gumpUser.getSessionKey();//登录的sesionKey
  159 +
129 160  
130 161 3.支付功能
131 162 1)使用gump通行证登录,其中serverId为必传参数
... ... @@ -137,7 +168,7 @@ Help==&gt;About Eclips点击Android对应的图标就可以查看版本了.
137 168 payInfo.putString("extraInfo", "This is demo!");
138 169 payInfo.putString("serverId", "B4003");
139 170 payInfo.putString("roleId", "10010");
140   - GumpSDK.pay(MainActivity.this, payInfo);
  171 + GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback);
141 172 调用pay方法时,必须穿入一个bundle对象,包含如上字段,除serverId外可以设置值为空,但是字段必须全部包含
142 173 2)未使用gump通行证登录,需要传入用户id,serverId为必传参数
143 174  
... ... @@ -148,29 +179,42 @@ Help==&gt;About Eclips点击Android对应的图标就可以查看版本了.
148 179 payInfo.putString("extraInfo", "This is demo!");
149 180 payInfo.putString("serverId", "B4003");
150 181 payInfo.putString("roleId", "10010");
151   - GumpSDK.pay(MainActivity.this, payInfo,"1021");
  182 + GumpSDK.pay(MainActivity.this, payInfo,"1021",PurchaseCallback);
  183 +
  184 +PurchaseCallback为支付状态回调接口,此接口含有3个方法
  185 +
  186 + @Override
  187 + public void onPurchaseCompleted(PurchaseResult result) {
  188 + Log.i(TAG,"purchase completed");
  189 + }
  190 +
  191 + @Override
  192 + public void onPurchaseError(int code, String msg) {
  193 + Log.i(TAG,"purchase error");
  194 + }
  195 +
  196 + @Override
  197 + public void onPurchaseCanceled() {
  198 + Log.i(TAG,"purchase canceled");
  199 + }
  200 +
152 201 5.注销登录
153 202  
154   - GumpSDK.logout(Activity,GumpSDK.Callback);
155   -当此方法调用后,用户退出登录,并会通过callback接口通知调用程序!
  203 + GumpSDK.logout(Activity);
  204 +当此方法调用后,用户退出登录,并会通过LoginStateListener接口通知调用程序!
156 205 ## 第二章 常见问题
157 206 ### 问题1: 如何避免混淆对SDK的影响?
158 207 解答:有些开发者对接入了SDK的程序进行混淆时,有可能会覆盖某些java
159 208 类,导致SDK无法正常工作,解决方法如下:
160 209 Ø 请开发者在混淆配置文件proguard.cfg或proguard-project.txt的最后加上
161 210  
162   - -keepattributes *Annotation*
  211 + -keepattributes *Annotation*,InnerClasses,SourceFile,LineNumberTable
163 212 -keep public class * extends android.app.Service
164 213 -keep public class com.google.vending.licensing.ILicensingService
165 214 -keep public class com.android.vending.licensing.ILicensingService
166 215 -keep class com.gumptech.sdk.view.* {*;}
167 216 -keep class com.gumptech.sdk.web.* {*;}
168   - -keep class com.gumptech.sdk.GumpSDK$Callback{
169   - void onLogout();
170   - }
171   - -keep class com.gumptech.sdk.GumpPreference{
172   - public static final <fields>;
173   - }
  217 +
174 218  
175 219 使得混淆的时候不会影响SDK的命名空间。
176 220 ### 问题2:后台已经配置ok的情况下,支付列表仍然为空或登录总是出错?