Commit 06e47b8f032b0028fb02eed3dd6ea1c25c508091

Authored by 赵康
0 parents
Exists in master

修改包名,修改域名,全新打包

Showing 19 changed files with 654 additions and 0 deletions Side-by-side Diff

GameSDK-release4.1.5.aar
No preview for this file type
GameSDKDemo/.gitignore
... ... @@ -0,0 +1,2 @@
  1 +/build
  2 +*.iml
0 3 \ No newline at end of file
GameSDKDemo/build.gradle
... ... @@ -0,0 +1,38 @@
  1 +apply plugin: 'com.android.application'
  2 +
  3 +repositories{
  4 + flatDir{
  5 + dirs 'libs'
  6 + }
  7 +}
  8 +
  9 +android {
  10 + compileSdkVersion 22
  11 + buildToolsVersion "25.0.0"
  12 +
  13 +
  14 + defaultConfig {
  15 + minSdkVersion 9
  16 + targetSdkVersion 22
  17 + versionCode 2
  18 + versionName "1.1"
  19 + }
  20 +
  21 + buildTypes {
  22 + release {
  23 + minifyEnabled false
  24 + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  25 + }
  26 + }
  27 + lintOptions{
  28 + abortOnError false
  29 + }
  30 +}
  31 +
  32 +dependencies {
  33 + compile fileTree(dir: 'libs', include: ['*.jar'])
  34 + testCompile 'junit:junit:4.12'
  35 + compile 'com.android.support:appcompat-v7:22.2.0'
  36 + compile project(':GameSDK')
  37 +// compile(name:'GameSDK-release4.1.4',ext:'aar')
  38 +}
GameSDKDemo/libs/GameSDK-release4.1.5.aar
No preview for this file type
GameSDKDemo/proguard-rules.pro
... ... @@ -0,0 +1,17 @@
  1 +# Add project specific ProGuard rules here.
  2 +# By default, the flags in this file are appended to flags specified
  3 +# in D:\DevTools\android-com.gumptech.sdk-windows/tools/proguard/proguard-android.txt
  4 +# You can edit the include path and order by changing the proguardFiles
  5 +# directive in build.gradle.
  6 +#
  7 +# For more details, see
  8 +# http://developer.android.com/guide/developing/tools/proguard.html
  9 +
  10 +# Add any project specific keep options here:
  11 +
  12 +# If your project uses WebView with JS, uncomment the following
  13 +# and specify the fully qualified class name to the JavaScript interface
  14 +# class:
  15 +#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
  16 +# public *;
  17 +#}
GameSDKDemo/src/androidTest/java/com/gumptech/sdk/demo/ApplicationTest.java
... ... @@ -0,0 +1,13 @@
  1 +package com.gumptech.sdk.demo;
  2 +
  3 +import android.app.Application;
  4 +import android.test.ApplicationTestCase;
  5 +
  6 +/**
  7 + * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
  8 + */
  9 +public class ApplicationTest extends ApplicationTestCase<Application> {
  10 + public ApplicationTest() {
  11 + super(Application.class);
  12 + }
  13 +}
0 14 \ No newline at end of file
GameSDKDemo/src/main/AndroidManifest.xml
... ... @@ -0,0 +1,82 @@
  1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2 + package="com.gumptech.sdk.demo">
  3 +
  4 +
  5 + <uses-sdk
  6 + android:minSdkVersion="9"
  7 + android:targetSdkVersion="20" />
  8 +
  9 + <uses-permission android:name="android.permission.INTERNET" />
  10 + <uses-permission android:name="android.permission.BLUETOOTH" />
  11 + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  12 + <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  13 + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  14 + <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
  15 + <!-- Danger Level permission-->
  16 + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  17 + <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  18 + <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  19 + <uses-permission android:name="android.permission.SEND_SMS"/>
  20 +
  21 + <!-- VERY IMPORTANT! Don't forget this permission, or in-app billing won't work. -->
  22 + <uses-permission android:name="com.android.vending.BILLING" />
  23 +
  24 + <application
  25 + android:allowBackup="true"
  26 + android:icon="@drawable/ic_launcher"
  27 +
  28 + android:label="@string/app_name" >
  29 + <activity
  30 + android:name="com.gumptech.sdk.demo.MainActivity"
  31 + android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
  32 + android:label="@string/app_name"
  33 + android:screenOrientation="portrait" >
  34 + <intent-filter>
  35 + <action android:name="android.intent.action.MAIN" />
  36 +
  37 + <category android:name="android.intent.category.LAUNCHER" />
  38 + </intent-filter>
  39 + </activity>
  40 + <activity
  41 + android:name="com.g.root.ContainerActivity"
  42 + android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
  43 + android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
  44 + android:launchMode="singleTask"
  45 + android:theme="@style/Theme.TransparentWin" >
  46 + </activity>
  47 + <activity
  48 + android:name="com.g.root.PaymentActivity"
  49 + android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
  50 + android:launchMode="singleTask"
  51 + android:theme="@android:style/Theme.Translucent.NoTitleBar" >
  52 + <intent-filter>
  53 + <category android:name="android.intent.category.DEFAULT" />
  54 +
  55 + <action android:name="android.intent.action.VIEW" />
  56 +
  57 + <category android:name="android.intent.category.BROWSABLE" />
  58 +
  59 + <data
  60 + android:host="com.gump.sdk"
  61 + android:scheme="gump10031" />
  62 + </intent-filter>
  63 + </activity>
  64 + <activity
  65 + android:name="com.g.root.ExchangeWindow"
  66 + android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
  67 + android:theme="@style/Theme.WinForExchange" >
  68 + </activity>
  69 +
  70 + <service android:name="com.g.root.PushService" >
  71 + </service>
  72 +
  73 + <!-- vk -->
  74 + <!-- <activity android:name="com.vk.com.gumptech.sdk.VKOpenAuthActivity" /> -->
  75 + <!-- <activity -->
  76 + <!-- android:name="com.vk.com.gumptech.sdk.VKServiceActivity" -->
  77 + <!-- android:label="ServiceActivity" -->
  78 + <!-- android:theme="@style/VK.Transparent" /> -->
  79 + </application>
  80 +
  81 +
  82 +</manifest>
GameSDKDemo/src/main/java/com/gumptech/sdk/demo/MainActivity.java
... ... @@ -0,0 +1,184 @@
  1 +package com.gumptech.sdk.demo;
  2 +
  3 +import android.app.Activity;
  4 +import android.content.Context;
  5 +import android.os.Bundle;
  6 +import android.text.ClipboardManager;
  7 +import android.util.Log;
  8 +import android.view.View;
  9 +import android.widget.Button;
  10 +import android.widget.TextView;
  11 +import android.widget.Toast;
  12 +
  13 +import com.g.root.GumpPreference;
  14 +import com.g.root.GumpSDK;
  15 +import com.g.root.PaymentVersion;
  16 +import com.g.root.bean.GumpUser;
  17 +import com.g.root.bean.PurchaseResult;
  18 +import com.g.root.callback.InitializeCallback;
  19 +import com.g.root.callback.LoginStateListener;
  20 +import com.g.root.callback.PurchaseCallback;
  21 +import com.g.root.passport.fb.FBAccessToken;
  22 +
  23 +public class MainActivity extends Activity implements PurchaseCallback {
  24 +
  25 + private static final String TAG = "MainActivity";
  26 +
  27 + private TextView tvVersion;
  28 + private TextView userInfo;
  29 +
  30 + private Button btnLoginOrLogout;
  31 +
  32 + private String appId = "10022";
  33 + private String appKey = "93a27b0bd99bac3e68a440b48aa421ab";
  34 + private String sessionKey;
  35 +
  36 +
  37 + @Override
  38 + protected void onCreate(Bundle savedInstanceState) {
  39 + super.onCreate(savedInstanceState);
  40 + setContentView(R.layout.activity_main);
  41 + tvVersion = (TextView) findViewById(R.id.version);
  42 + userInfo = (TextView) findViewById(R.id.user_info);
  43 + btnLoginOrLogout = (Button) findViewById(R.id.login_or_logout);
  44 + btnLoginOrLogout.setOnClickListener(new View.OnClickListener() {
  45 +
  46 + @Override
  47 + public void onClick(View v) {
  48 + if (btnLoginOrLogout.getTag() == null || (Integer) btnLoginOrLogout.getTag() == 0)
  49 + GumpSDK.start(MainActivity.this);
  50 + else
  51 + GumpSDK.logout(MainActivity.this);
  52 + }
  53 + });
  54 + findViewById(R.id.pay).setOnClickListener(new View.OnClickListener() {
  55 +
  56 + @Override
  57 + public void onClick(View v) {
  58 + Bundle payInfo = new Bundle();
  59 + payInfo.putString("product", "test2");
  60 + payInfo.putFloat("amount", 0.1f);
  61 + payInfo.putString("extraInfo", "This is demo!");
  62 + payInfo.putString("serverId", "100");
  63 + payInfo.putString("roleId","100123");
  64 + payInfo.putString("sessionKey", sessionKey);
  65 + GumpSDK.pay(MainActivity.this, payInfo, MainActivity.this);
  66 + }
  67 + });
  68 + findViewById(R.id.iap).setOnClickListener(new View.OnClickListener() {
  69 + @Override
  70 + public void onClick(View v) {
  71 + Bundle payInfo = new Bundle();
  72 + payInfo.putString("product", "gp_skuId");
  73 + payInfo.putFloat("amount", 0.1f);
  74 + payInfo.putString("extraInfo", "This is demo!");
  75 + payInfo.putString("serverId", "100");
  76 + payInfo.putString("roleId","100123");
  77 + GumpSDK.iap(MainActivity.this, payInfo, MainActivity.this);
  78 + }
  79 + });
  80 + /**
  81 + * 设置否是打印debug日志
  82 + */
  83 + GumpSDK.getSettings().enableDebugLogging(true);
  84 + /**
  85 + * 设置是否启用facebook登录
  86 + */
  87 + GumpSDK.getSettings().setFBEnable(true);
  88 + /**
  89 + * 设置是否启用Vk登录
  90 + */
  91 + GumpSDK.getSettings().setVKEnable(false);
  92 + /**
  93 + * 设置屏幕方向
  94 + */
  95 + GumpSDK.getSettings().setScreenLandscape(true);
  96 +
  97 + /**
  98 + * 设置支付版本
  99 + */
  100 + GumpSDK.getSettings().setPaymentVersion(PaymentVersion.V4);
  101 +
  102 + /**
  103 + * 设置用户登录状态监听器
  104 + */
  105 +
  106 + GumpSDK.setUserStateListener(new LoginStateListener() {
  107 + @Override
  108 + public void onLoginSuccess(GumpUser user) {
  109 + ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
  110 + cm.setText(user.getSessionKey());
  111 + sessionKey = user.getSessionKey();
  112 + String userType = null;
  113 + switch (user.getAccountType()) {
  114 + case GumpPreference.ACCOUNT_TYPE_FB:
  115 + userType = "Facebook登录";
  116 + String fbToken = FBAccessToken.getCurrentAccessToken().getToken();
  117 + Log.d(TAG, "FBAccessToken:" + fbToken);
  118 + break;
  119 + case GumpPreference.ACCOUNT_TYPE_QUICK_REG:
  120 + userType = "快速登录";
  121 + break;
  122 + case GumpPreference.ACCOUNT_TYPE_REG:
  123 + userType = "gump注册用户";
  124 + break;
  125 + case GumpPreference.ACCOUNT_TYPE_VK:
  126 + userType = "vk登录";
  127 + break;
  128 + }
  129 + userInfo.setText(" Userid:" + user.getUid() + "\n accountType:(" + user.getAccountType() + ") " + userType + "\n sessionKey:" + user.getSessionKey());
  130 + btnLoginOrLogout.setText("Logout");
  131 + btnLoginOrLogout.setTag(1);
  132 + }
  133 +
  134 + @Override
  135 + public void onLoginFailed(int code, String msg) {
  136 + userInfo.setText(msg);
  137 + Toast.makeText(MainActivity.this, "Login failed:code=" + code + ",message=" + msg, Toast.LENGTH_SHORT).show();
  138 + }
  139 +
  140 + @Override
  141 + public void onLoginCanceled() {
  142 + Toast.makeText(MainActivity.this, "operate be canceled", Toast.LENGTH_SHORT).show();
  143 + }
  144 +
  145 + @Override
  146 + public void onLogout() {
  147 + btnLoginOrLogout.setText("Login");
  148 + btnLoginOrLogout.setTag(0);
  149 + userInfo.setText("User is logout");
  150 + }
  151 + });
  152 + /**
  153 + * 初始化sdk
  154 + */
  155 + GumpSDK.init(getApplicationContext(), appId, appKey, "1000", new InitializeCallback() {
  156 + @Override
  157 + public void initComplete(int result) {
  158 + if (result == GumpSDK.CODE.OK) {
  159 + btnLoginOrLogout.setEnabled(true);
  160 + }
  161 + }
  162 + });
  163 +
  164 + tvVersion.setText("SDK Version:" + GumpSDK.getVersion());
  165 +
  166 + }
  167 +
  168 + @Override
  169 + public void onPurchaseCompleted(PurchaseResult result) {
  170 + Log.i(TAG, "purchase completed");
  171 + }
  172 +
  173 + @Override
  174 + public void onPurchaseError(int code, String msg) {
  175 + Log.i(TAG, "purchase error");
  176 + }
  177 +
  178 + @Override
  179 + public void onPurchaseCanceled() {
  180 + Log.i(TAG, "purchase canceled");
  181 + }
  182 +
  183 +
  184 +}
GameSDKDemo/src/main/res/drawable-hdpi/ic_launcher.png

7.23 KB

GameSDKDemo/src/main/res/drawable-mdpi/ic_launcher.png

4.73 KB

GameSDKDemo/src/main/res/drawable-xhdpi/ic_launcher.png

9.91 KB

GameSDKDemo/src/main/res/layout/activity_main.xml
... ... @@ -0,0 +1,41 @@
  1 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2 + android:layout_width="match_parent"
  3 + android:layout_height="match_parent"
  4 + android:background="@android:color/white"
  5 + android:orientation="vertical">
  6 +
  7 + <TextView
  8 + android:id="@+id/version"
  9 + android:layout_width="wrap_content"
  10 + android:layout_height="wrap_content"
  11 + android:layout_gravity="center_horizontal"
  12 + android:textColor="@color/black_text" />
  13 +
  14 + <TextView
  15 + android:id="@+id/user_info"
  16 + android:layout_width="match_parent"
  17 + android:layout_height="wrap_content"
  18 + android:textColor="@android:color/black" />
  19 +
  20 + <Button
  21 + android:id="@+id/login_or_logout"
  22 + android:layout_width="match_parent"
  23 + android:layout_height="wrap_content"
  24 + android:backgroundTint="@color/g_color"
  25 + android:enabled="false"
  26 + android:text="Login" />
  27 + <Button
  28 + android:id="@+id/iap"
  29 + android:layout_width="match_parent"
  30 + android:layout_height="wrap_content"
  31 + android:backgroundTint="@color/g_color"
  32 + android:text="IAP"/>
  33 +
  34 + <Button
  35 + android:id="@+id/pay"
  36 + android:layout_width="match_parent"
  37 + android:layout_height="wrap_content"
  38 + android:backgroundTint="@color/g_color"
  39 + android:text="pay" />
  40 +
  41 +</LinearLayout>
0 42 \ No newline at end of file
GameSDKDemo/src/main/res/values-w820dp/dimens.xml
... ... @@ -0,0 +1,10 @@
  1 +<resources>
  2 +
  3 + <!--
  4 + Example customization of dimensions originally defined in res/values/dimens.xml
  5 + (such as screen margins) for screens with more than 820dp of available width. This
  6 + would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
  7 + -->
  8 + <dimen name="activity_horizontal_margin">64dp</dimen>
  9 +
  10 +</resources>
GameSDKDemo/src/main/res/values/colors.xml
... ... @@ -0,0 +1,7 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 + <color name="colorPrimary">#3F51B5</color>
  4 + <color name="colorPrimaryDark">#303F9F</color>
  5 + <color name="colorAccent">#FF4081</color>
  6 + <color name="g_color">#55BCDC</color>
  7 +</resources>
GameSDKDemo/src/main/res/values/dimens.xml
... ... @@ -0,0 +1,7 @@
  1 +<resources>
  2 +
  3 + <!-- Default screen margins, per the Android Design guidelines. -->
  4 + <dimen name="activity_horizontal_margin">16dp</dimen>
  5 + <dimen name="activity_vertical_margin">16dp</dimen>
  6 +
  7 +</resources>
GameSDKDemo/src/main/res/values/strings.xml
... ... @@ -0,0 +1,9 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 +
  4 + <string name="app_name">GameSDKSample</string>
  5 + <string name="hello_world">Hello world!</string>
  6 + <string name="action_settings">Settings</string>
  7 +
  8 +</resources>
  9 +
0 10 \ No newline at end of file
GameSDKDemo/src/main/res/values/styles.xml
... ... @@ -0,0 +1,11 @@
  1 +<resources>
  2 +
  3 + <!-- Base application theme. -->
  4 + <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
  5 + <!-- Customize your theme here. -->
  6 + <item name="colorPrimary">@color/colorPrimary</item>
  7 + <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  8 + <item name="colorAccent">@color/colorAccent</item>
  9 + </style>
  10 +
  11 +</resources>
GameSDKDemo/src/test/java/com/gumptech/sdk/demo/ExampleUnitTest.java
... ... @@ -0,0 +1,15 @@
  1 +package com.gumptech.sdk.demo;
  2 +
  3 +import org.junit.Test;
  4 +
  5 +import static org.junit.Assert.*;
  6 +
  7 +/**
  8 + * To work on unit tests, switch the Test Artifact in the Build Variants view.
  9 + */
  10 +public class ExampleUnitTest {
  11 + @Test
  12 + public void addition_isCorrect() throws Exception {
  13 + assertEquals(4, 2 + 2);
  14 + }
  15 +}
0 16 \ No newline at end of file
... ... @@ -0,0 +1,218 @@
  1 +# Gump SDK 4 for Android接入文档
  2 +
  3 +V4.1.5
  4 +2017年3月10日
  5 +
  6 +## 版本概述
  7 +
  8 +此版本为使用AndroidStudio开发的第一个版本,一改eclipse的工程依赖方式,使用aar的方式提供sdk接入包,除功能外,相对上一版本没有继承关系,请按此文档描述接入.
  9 +
  10 +此SDK适用android2.3以上系统.
  11 +
  12 +## 第一章 接入指南
  13 +### 1.依赖导入
  14 +将aar添加到libs目录下,然后配置gradle
  15 +以下为必须项
  16 +
  17 + repositories{
  18 + flatDir{
  19 + dirs 'libs'
  20 + }
  21 + }
  22 + dependencies {
  23 + compile(name:'GameSDK-releaseXXX',ext:'aar')
  24 + }
  25 +
  26 +
  27 +可选接入vk登录时,需要导入vkLibrary工程,并配置模块依赖,如下
  28 +
  29 + compile project(':vksdk_library')
  30 +
  31 +### 2.修改AndroidManifest.xml文件
  32 +首先添加必要的权限,如下所示:
  33 +
  34 + <uses-permission android:name="android.permission.INTERNET" />
  35 + <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  36 + <uses-permission android:name="android.permission.BLUETOOTH" />
  37 + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  38 + <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
  39 + <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
  40 + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  41 + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  42 + <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
  43 + <uses-permission android:name="android.permission.SEND_SMS"/>
  44 + <!-- VERY IMPORTANT! Don't forget this permission, or in-app billing won't work. -->
  45 + <uses-permission android:name="com.android.vending.BILLING" />
  46 +
  47 +其次注册相应的Activity,具体如下:
  48 +
  49 + <activity
  50 + android:name="com.g.root.ContainerActivity"
  51 + android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
  52 + android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
  53 + android:launchMode="singleTask"
  54 + android:theme="@style/Theme.TransparentWin" >
  55 + </activity>
  56 + <activity
  57 + android:name="com.g.root.PaymentActivity"
  58 + android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
  59 + android:launchMode="singleTask"
  60 + android:theme="@android:style/Theme.Translucent.NoTitleBar" >
  61 + <intent-filter>
  62 + <category android:name="android.intent.category.DEFAULT" />
  63 + <action android:name="android.intent.action.VIEW" />
  64 + <category android:name="android.intent.category.BROWSABLE" />
  65 + <data
  66 + android:host="com.gump.sdk"
  67 + android:scheme="gump+游戏的appId" />
  68 + </intent-filter>
  69 + </activity>
  70 + <activity
  71 + android:name="com.g.root.ExchangeWindow"
  72 + android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
  73 + android:theme="@style/Theme.WinForExchange" >
  74 + </activity>
  75 +
  76 + <service android:name="com.g.root.PushService" />
  77 +
  78 + <!-- vk登录使用,若不接入vk,不需配置 -->
  79 + <activity android:name="com.vk.sdk.VKOpenAuthActivity" />
  80 + <activity
  81 + android:name="com.vk.sdk.VKServiceActivity"
  82 + android:label="ServiceActivity"
  83 + android:theme="@style/VK.Transparent" />
  84 +
  85 +### 3.向Gump平台索要游戏ID(AppID),完成代码接入
  86 +正式开始接入逻辑代码前,先介绍下一些附加设置,以方便代码接入
  87 +
  88 +*是否打印debug日志
  89 +
  90 + GumpSDK.getSettings().enableDebugLogging(true);
  91 +
  92 +*Gump Logo隐藏
  93 +
  94 + GumpSDK.getSettings().setLogoShow(false);
  95 +
  96 +*横竖屏控制,默认为横屏,参数为false即为竖屏
  97 +
  98 + GumpSDK.getSettings().setScreenLandscape(true);
  99 +
  100 +*设置是否启用Facebook登录和VK登录
  101 +
  102 + GumpSDK.getSettings().setFBEnable(true);
  103 + GumpSDK.getSettings().setVKEnable(true);
  104 +
  105 +*若要使用V4版支付请设置
  106 +
  107 + GumpSDK.getSettings().setPaymentVersion(PaymentVersion.V4);
  108 +
  109 +#### 1.调用GumpSDK前需要执行初始化。
  110 +
  111 +若不需要分渠道
  112 +
  113 + GumpSDK.init(Context,Appid, Appkey,InitializeCallback);
  114 +如果需要定义渠道,必须使用如下方法
  115 +
  116 + GumpSDK.init(Context,Appid, Appkey,ChannelId,InitializeCallback);
  117 +
  118 +InitializeCallback为初始化回调接口,此接口只有一个回调方法initComplete(int result) result标识是否初始化成功,当result等于GumpSDK.CODE.OK时为成功,其他为失败
  119 +
  120 +#### 2.调用GumpSDK的开始方法,将执行登录流程,需要一个Activity实例作参数
  121 +
  122 + GumpSDK.start(Activity);
  123 +在此之前,开发者需要注册用户状态监听以接受用户的登录/登出通知,通常如下:
  124 +
  125 + GumpSDK.setUserStateListener(new LoginStateListener() {
  126 + @Override
  127 + public void onLoginSuccess(GumpUser gumpUser) {
  128 + //登录成功,用户信息包含在GumpUser对象里
  129 + }
  130 +
  131 + @Override
  132 + public void onLoginFailed(int code, String msg) {
  133 + //登录出错,根据错误码和信息判断错误类型
  134 + Toast.makeText(MainActivity.this, "Login failed:code="+code+",message="+msg, Toast.LENGTH_SHORT).show();
  135 + }
  136 +
  137 + @Override
  138 + public void onLoginCanceled() {
  139 + //用户取消登录
  140 + Toast.makeText(MainActivity.this, "operate be canceled", Toast.LENGTH_SHORT).show();
  141 + }
  142 +
  143 + @Override
  144 + public void onLogout() {
  145 + //用户登出
  146 +
  147 + }
  148 + });
  149 +
  150 +如上成功登录后收到的GumpUser对象包含以下信息
  151 +
  152 + gumpUser.getUid();//获取用户的userid,此Id标识唯一用户!
  153 + gumpUser.getAccountType();//用户类型,此类型数据可从GumpPreference常量获取
  154 + gumpUser.getSessionKey();//登录的sesionKey
  155 +
  156 +
  157 +#### 3.支付功能
  158 +1)使用gump通行证登录,其中除nick和roleId外所有参数为必传参数
  159 +
  160 + Bundle payInfo = new Bundle();
  161 + payInfo.putString("nick", "thi");
  162 + payInfo.putString("product", "元宝");
  163 + payInfo.putFloat("amount", 40.0f);
  164 + payInfo.putString("extraInfo", "This is demo!");
  165 + payInfo.putString("serverId", "B4003");
  166 + payInfo.putString("roleId", "10010");
  167 + payInfo.putString("sessionKey","sessionkey");
  168 + GumpSDK.pay(MainActivity.this, payInfo,PurchaseCallback);
  169 +调用pay方法时,必须穿入一个bundle对象,包含如上字段,除nick和roleId外所有字段必须全部包含,其中sessionKey为登录时返回的sessionKey
  170 +
  171 +
  172 +2)IAP支付,roleId为可选参数,其他参数必传
  173 +
  174 + Bundle payInfo = new Bundle();
  175 + payInfo.putString("product", "gp_skuId");
  176 + payInfo.putFloat("amount", 0.1f);
  177 + payInfo.putString("extraInfo", "This is demo!");
  178 + payInfo.putString("serverId", "100");
  179 + payInfo.putString("roleId","100123");
  180 + GumpSDK.iap(MainActivity.this, payInfo, PurchaseCallback);
  181 +
  182 +3)PurchaseCallback为支付状态回调接口,此接口含有3个方法
  183 +
  184 + @Override
  185 + public void onPurchaseCompleted(PurchaseResult result) {
  186 + Log.i(TAG,"purchase completed");
  187 + }
  188 +
  189 + @Override
  190 + public void onPurchaseError(int code, String msg) {
  191 + Log.i(TAG,"purchase error");
  192 + }
  193 +
  194 + @Override
  195 + public void onPurchaseCanceled() {
  196 + Log.i(TAG,"purchase canceled");
  197 + }
  198 +
  199 +#### 4.注销登录
  200 +
  201 + GumpSDK.logout(Activity);
  202 +当此方法调用后,用户退出登录,并会通过LoginStateListener接口通知调用程序!为了便于用户切换登录账户,请在游戏内提供用户注销的触发按钮
  203 +## 第二章 常见问题
  204 +### 问题1: 如何避免混淆对SDK的影响?
  205 +解答:有些开发者对接入了SDK的程序进行混淆时,有可能会覆盖某些java
  206 +类,导致SDK无法正常工作,解决方法如下:
  207 +Ø 请开发者在混淆配置文件proguard.cfg或proguard-project.txt的最后加上
  208 +
  209 + -keepattributes *Annotation*,InnerClasses,SourceFile,LineNumberTable
  210 + -keep public class * extends android.app.Service
  211 + -keep public class com.google.vending.licensing.ILicensingService
  212 + -keep public class com.android.vending.licensing.ILicensingService
  213 + -keep class com.g.root.view.* {*;}
  214 + -keep class com.g.root.web.* {*;}
  215 + -keep class com.g.root.bridge.impl.*{*;}
  216 +
  217 +
  218 +使得混淆的时候不会影响SDK的命名空间。
0 219 \ No newline at end of file