遊戲sdk接入教程:uc(阿里遊戲)接入

上文中已介紹了環境與軟件的安裝配置(參見該網址:http://www.cnblogs.com/laohaizei/p/6723490.html),以後咱們就能夠開始學習接入渠道了,html

UC已和豌鬥夾渠道合併,更名叫阿里遊戲java

我這邊演示用DEMO的下載的爲融合版,看一下下載下來後有些什麼東西吧android

 

具體裏面的東西如何使用,咱們晚點再說web

 

在接入以前,需先在渠道後臺建立遊戲,獲取一些接入參數。算法

客戶端所須要參數包括:cpId、gameId、serverId。參數基本是初始化時所須要傳入的參數。json

 

 

準備工做作爲,正式開始接入,首先確定是把所須要的資源如JAR包之類的複製到個人工程中去。api

我這邊的接入環境是Eclipse服務器

 

那首先咱們得先建立一個demo工程,打開咱們的Eclipse,新建一個工程,名爲demoapp

 

 

 

 

建立完成以後以下圖,會發現咱們左側欄會有兩個新工程ide

很明顯如今是有問題的,有兩個大大的感嘆號,那有些東西咱們是不須要的,就直接大膽的delete掉 ,先刪除appcompat v7 選中appcompat v7按delete鍵,記得打勾以下圖紅色標記處,而後按肯定

 

如今咱們發現打叉叉的地方有這幾個地方

首先咱們去values裏面把錯誤的地方刪除

以後咱們發現錯誤的地方只有一處了

咱們雙擊MainActivity.java打開這個類

而後咱們把除了第一行外全部的代碼都刪除,以後我會把整個類的代碼寫在後面,你們只須要把整個類的代碼複製進這個類裏就行

 

而後咱們clean咱們的工程,選中demo

 

而後把下圖中紅框裏的三個目錄都delete刪除

一樣重複剛剛的步驟,clean咱們的工程

一樣打開下圖中報錯的文件

刪除文字下方帶紅色波浪線的

再次clean一下咱們的demo工程後發現沒有地方再報錯了

 

打開咱們下載好解壓出來的文檔目錄找到所須要依賴的JAR包

紅框所示就是咱們Eclipse所須要的jar包了。

把alipay.jar複製到咱們工程的libs目錄下就行。

 

.arr是studio中用的相似於Eclipse的.jar,但其中整合了其餘資源,因此,咱們須要把arr文件的後綴名改爲rar或者zip把的解壓出來獲取咱們須要的資源文件。

而後解壓

解壓出來的目錄格式:

其中,咱們須要是上圖中兩個紅框中的。

把ucgamesdk.jar複製到咱們工程的libs目錄下

把assets目錄下的全部文件複製到咱們工程的assets目錄下。

至此,咱們已經把全部須要的東西都複製到了咱們的工程中,clean 一下咱們的demo工程,接下來個上代碼了。

 

首先咱們打開咱們工程的AndroidManifest.xml文件。

 

而後複製如下代碼

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.demo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="cn.uc.gamesdk.activity.ProxyActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:windowSoftInputMode="adjustResize" >
            <intent-filter>
                <action android:name="cn.uc.gamesdk.sdkweb" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <!-- alipay sdk begin -->
        <activity
            android:name="com.alipay.sdk.app.H5PayActivity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
            android:exported="false"
            android:screenOrientation="behind" >
        </activity>
        <activity
            android:name="com.alipay.sdk.auth.AuthActivity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
            android:exported="false"
            android:screenOrientation="behind" >
        </activity>
        <!-- alipay sdk end -->
        <!-- 遊戲的橫豎屏配置 -->
        <meta-data
            android:name="ali_screen_orientation"
            android:value="landscape" />
    </application>

</manifest>

  

而後到咱們demo工程的AndroidManifest.xml全選替換粘貼

 

以上AndroidManifest.xml修改好了。

 

作完以上步驟,接下來,咱們開始接入SDK的接口。

首先打開咱們的MainActivity.java

剛剛我讓你們把這個文件裏的代碼都刪了,如今應該除了第一行是沒有東西的,而後把下面的代碼複製進去,注意別把第一行的代碼覆蓋了。

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import cn.uc.gamesdk.UCGameSdk;
import cn.uc.gamesdk.even.SDKEventKey;
import cn.uc.gamesdk.even.SDKEventReceiver;
import cn.uc.gamesdk.even.Subscribe;
import cn.uc.gamesdk.exception.AliLackActivityException;
import cn.uc.gamesdk.exception.AliNotInitException;
import cn.uc.gamesdk.open.GameParamInfo;
import cn.uc.gamesdk.open.OrderInfo;
import cn.uc.gamesdk.open.UCLogLevel;
import cn.uc.gamesdk.open.UCOrientation;
import cn.uc.gamesdk.param.SDKParamKey;
import cn.uc.gamesdk.param.SDKParams;

public class MainActivity extends Activity {

	final static String TAG = "demo";
	UCGameSdk sdk;
	int cpId = 0;
	int gameId = 0;
	int serverId = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver);
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver);
		sdk = UCGameSdk.defaultSdk();
	}

	private void init() {
		// TODO Auto-generated method stub
		GameParamInfo gameParamInfo = new GameParamInfo();
		gameParamInfo.setCpId(cpId);// 上文提到的遊戲參數 參數類型int
		gameParamInfo.setGameId(gameId);// 上文提到的遊戲參數 參數類型int
		gameParamInfo.setServerId(serverId);// 上文提到的遊戲參數 參數類型int
		// 設置是否支持查詢充值歷史和顯示切換帳號功能,
		// 若是不設置,默認具備查詢充值歷史記錄,不具備切換帳戶功能
		gameParamInfo.setEnablePayHistory(true);// 開啓查詢充值歷史功能
		gameParamInfo.setEnableUserChange(true);// 開啓帳號切換功能
		// 設置SDK屏幕方向
		// LANDSCAPE:橫屏,橫屏遊戲必須設置爲橫屏,PORTRAIT:豎屏
		gameParamInfo.setOrientation(UCOrientation.PORTRAIT);

		SDKParams sdkParams = new SDKParams();
		sdkParams.put(SDKParamKey.LOG_LEVEL, UCLogLevel.DEBUG);// 日誌等級
		sdkParams.put(SDKParamKey.GAME_PARAMS, gameParamInfo);
		// FIXME always debug
		// 是否打開調試模式。
		// 在爲true的時候,會鏈接到聯調測試環境(sdk.test4.9game.cn),
		// 當爲false的時候則會鏈接到正式環境(sdk.g.9game.cn)。
		sdkParams.put(SDKParamKey.DEBUG_MODE, false);

		try {
			sdk.initSdk(MainActivity.this, sdkParams);
		} catch (AliLackActivityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void login() {
		try {
			sdk.login(MainActivity.this, null);
		} catch (AliLackActivityException e) {
			// TODO Auto-generated catch block activity爲空,異常處理
			e.printStackTrace();
		} catch (AliNotInitException e) {
			// TODO Auto-generated catch block 未初始化,異常處理
			e.printStackTrace();
		}
	}

	private void pay() {
		SDKParams sdkParams = new SDKParams();
		sdkParams.put(SDKParamKey.CALLBACK_INFO, "{\"test\":true}");
		sdkParams.put(SDKParamKey.SERVER_ID, "1");
		sdkParams.put(SDKParamKey.ROLE_ID, "AAA");
		sdkParams.put(SDKParamKey.ROLE_NAME, "BBB");
		sdkParams.put(SDKParamKey.GRADE, "grade1");
		sdkParams.put(SDKParamKey.NOTIFY_URL, "");
		sdkParams.put(SDKParamKey.AMOUNT, "2.33");
		sdkParams.put(SDKParamKey.CP_ORDER_ID, "20160000101001");
		sdkParams.put(SDKParamKey.ACCOUNT_ID, "123");
		sdkParams.put(SDKParamKey.SIGN_TYPE, "MD5");
		sdkParams.put(SDKParamKey.SIGN, "遊戲服務器根據以上信息簽名後的結果");
		// 以上字段的值都須要由遊戲服務器生成

		try {
			UCGameSdk.defaultSdk().pay(MainActivity.this, sdkParams);
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block 參數錯
			e.printStackTrace();
		} catch (AliLackActivityException e) {
			// TODO Auto-generated catch block activity null
			e.printStackTrace();
		} catch (AliNotInitException e) {
			// TODO Auto-generated catch block 未初始化
			e.printStackTrace();
		}
	}

	private void sendUserInfo() {
		SDKParams sdkParams = new SDKParams();
		sdkParams.put(SDKParamKey.STRING_ROLE_ID, "roleId");
		sdkParams.put(SDKParamKey.STRING_ROLE_NAME, "roleName");
		sdkParams.put(SDKParamKey.LONG_ROLE_LEVEL, 1);
		sdkParams.put(SDKParamKey.STRING_ZONE_ID, "zoneId");
		sdkParams.put(SDKParamKey.STRING_ZONE_NAME, "serverId");
		sdkParams.put(SDKParamKey.LONG_ROLE_CTIME, 1456397360);
		try {
			sdk.submitRoleData(MainActivity.this, sdkParams);
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (AliNotInitException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (AliLackActivityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private void logout(){
		try {
			sdk.logout(MainActivity.this, null);
		} catch (AliLackActivityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (AliNotInitException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void exit() {
		try {
			sdk.exit(MainActivity.this, null);
		} catch (AliLackActivityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (AliNotInitException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


	SDKEventReceiver eventReceiver = new SDKEventReceiver() {
		@Subscribe(event = SDKEventKey.ON_INIT_SUCC)
		private void onInitSucc() {
			// 初始化成功
			Log.d(TAG, "init success");
		}

		@Subscribe(event = SDKEventKey.ON_INIT_FAILED)
		private void onInitFailed(String data) {
			// 初始化失敗
			Log.d(TAG, "init failed:" + data);
		}

		@Subscribe(event = SDKEventKey.ON_LOGIN_SUCC)
		private void onLoginSucc(String sid) {
			// 登陸成功
			// sid爲用戶的登陸會話標識,用於給遊戲服務器校驗用戶登陸狀態使用。
			Log.d(TAG, "login success:sid:" + sid);
		}

		@Subscribe(event = SDKEventKey.ON_LOGIN_FAILED)
		private void onLoginFailed(String desc) {
			// 登陸失敗
			Log.d(TAG, "login failed:" + desc);
		}

		@Subscribe(event = SDKEventKey.ON_LOGOUT_SUCC)
		private void onLogoutSucc() {
			// 登出成功
			Log.d(TAG, "logout success");
		}

		@Subscribe(event = SDKEventKey.ON_LOGOUT_FAILED)
		private void onLogoutFailed() {
			// 登出失敗
			Log.d(TAG, "logout failed");
		}

		@Subscribe(event = SDKEventKey.ON_EXIT_SUCC)
		private void onExit(String desc) {
			// 退出遊戲
			Log.d(TAG, "exit:" + desc);

			MainActivity.this.finish();
			System.exit(0);
		}

		@Subscribe(event = SDKEventKey.ON_EXIT_CANCELED)
		private void onExitCanceled(String desc) {
			// 取消退出
			Log.d(TAG, "exit cancel:" + desc);
		}

		@Subscribe(event = SDKEventKey.ON_CREATE_ORDER_SUCC)
		private void onCreateOrderSucc(OrderInfo orderInfo) {
			// 支付成功
			if (orderInfo != null) {
				String txt = orderInfo.getOrderAmount() + ","
						+ orderInfo.getOrderId() + "," + orderInfo.getPayWay();
				Log.d(TAG, "充值成功: " + txt + "\n");
			}
			Log.i(TAG, "pay succ");
		}

		@Subscribe(event = SDKEventKey.ON_PAY_USER_EXIT)
		private void onPayUserExit(OrderInfo orderInfo) {
			// 支付失敗
			if (orderInfo != null) {
				String txt = orderInfo.getOrderAmount() + ","
						+ orderInfo.getOrderId() + "," + orderInfo.getPayWay();
				Log.d(TAG, "充值失敗: " + txt + "\n");
			}
			Log.i(TAG, "pay fail");
		}

	};

}

  


 至此咱們就把全部UC上線所需的接口完成了,添加UI並添加相應事件調用相應接口後,就是一個最簡單的demo了

 

若是想要了解具體的接口做用,和相應參數的說明,請繼續閱讀如下內容,或查看官方文檔

 

第一種步建立監聽:

SDKEventReceiver eventReceiver = new SDKEventReceiver() {
		@Subscribe(event = SDKEventKey.ON_INIT_SUCC)
		private void onInitSucc() {
			// 初始化成功
			Log.d(tag, "init success");
		}

		@Subscribe(event = SDKEventKey.ON_INIT_FAILED)
		private void onInitFailed(String data) {
			// 初始化失敗
			Log.d(tag, "init failed:" + data);
		}

		@Subscribe(event = SDKEventKey.ON_LOGIN_SUCC)
		private void onLoginSucc(String sid) {
			// 登陸成功
			// sid爲用戶的登陸會話標識,用於給遊戲服務器校驗用戶登陸狀態使用。
			Log.d(tag, "login success:sid:" + sid);
		}

		@Subscribe(event = SDKEventKey.ON_LOGIN_FAILED)
		private void onLoginFailed(String desc) {
			// 登陸失敗
			Log.d(tag, "login failed:" + desc);
		}

		@Subscribe(event = SDKEventKey.ON_LOGOUT_SUCC)
		private void onLogoutSucc() {
			// 登出成功
			Log.d(tag, "logout success");
		}

		@Subscribe(event = SDKEventKey.ON_LOGOUT_FAILED)
		private void onLogoutFailed() {
			// 登出失敗
			Log.d(tag, "logout failed");
		}

		@Subscribe(event = SDKEventKey.ON_EXIT_SUCC)
		private void onExit(String desc) {
			// 退出遊戲
			Log.d(tag, "exit:" + desc);

			MainActivity.this.finish();
			System.exit(0);
		}

		@Subscribe(event = SDKEventKey.ON_EXIT_CANCELED)
		private void onExitCanceled(String desc) {
			// 取消退出
			Log.d(tag, "exit cancel:" + desc);
		}
		
		@Subscribe(event = SDKEventKey.ON_CREATE_ORDER_SUCC)
        private void onCreateOrderSucc(OrderInfo orderInfo) {
            // 支付成功
            if (orderInfo != null) {
                String txt = orderInfo.getOrderAmount() + "," 
+ orderInfo.getOrderId() + "," + orderInfo.getPayWay();
                Log.d(tag, "充值成功: " + txt + "\n");
            }
            Log.i(tag, "pay succ");
        }

        @Subscribe(event = SDKEventKey.ON_PAY_USER_EXIT)
        private void onPayUserExit(OrderInfo orderInfo) {
// 支付失敗
            if (orderInfo != null) {
                String txt = orderInfo.getOrderAmount() + "," 
+ orderInfo.getOrderId() + "," + orderInfo.getPayWay();
                Log.d(tag, "充值失敗: " + txt + "\n");
            }
            Log.i(tag, "pay fail");
        }

	};

監聽建立完成後,須要在Activity onCreate中註冊,並在Activity onDestroy中註銷:

 

註冊:UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver);

 

@Override
	protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver);
	}

  

 

註銷:UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver);

 

   @Override

   protected void onDestroy() {

      // TODO Auto-generated method stub

      super.onDestroy();

      UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver);

   }

 

  

這樣在相應操做以後,UC的SDK就能給你回調了,在相應回調方法內,作本身遊戲相應操做就行

 

第二步初始化:

首先定義一個全局變量:UCGameSdk sdk;

並在Activity onCreate中獲取對象:sdk = UCGameSdk.defaultSdk();

以後就在Activity onCreate中調用UC的初始化接口:

   private void init() {

      // TODO Auto-generated method stub

      GameParamInfo gameParamInfo = new GameParamInfo();

        gameParamInfo.setCpId(cpId);//上文提到的遊戲參數 參數類型int

        gameParamInfo.setGameId(gameId);//上文提到的遊戲參數 參數類型int

        gameParamInfo.setServerId(serverId);//上文提到的遊戲參數 參數類型int

        //設置是否支持查詢充值歷史和顯示切換帳號功能,

        //若是不設置,默認具備查詢充值歷史記錄,不具備切換帳戶功能

        gameParamInfo.setEnablePayHistory(true);//開啓查詢充值歷史功能

        gameParamInfo.setEnableUserChange(true);//開啓帳號切換功能

        //設置SDK屏幕方向

        //LANDSCAPE:橫屏,橫屏遊戲必須設置爲橫屏,PORTRAIT:豎屏

        gameParamInfo.setOrientation(UCOrientation.PORTRAIT);

 

        SDKParams sdkParams = new SDKParams();

        sdkParams.put(SDKParamKey.LOG_LEVEL, UCLogLevel.DEBUG);//日誌等級

        sdkParams.put(SDKParamKey.GAME_PARAMS, gameParamInfo);

        //FIXME always debug

        //是否打開調試模式。

        //在爲true的時候,會鏈接到聯調測試環境(sdk.test4.9game.cn),

        //當爲false的時候則會鏈接到正式環境(sdk.g.9game.cn)。

        sdkParams.put(SDKParamKey.DEBUG_MODE, false);

       

      try {

         sdk.initSdk(MainActivity.this, sdkParams);

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }

  

 

調用登陸接口:

   private void login() {

      try {

         sdk.login(MainActivity.this, null);

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block activity爲空,異常處理

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block 未初始化,異常處理

         e.printStackTrace();

      }

   }

  

 

調用支付接口:

   private void pay() {

      SDKParams sdkParams = new SDKParams();

      sdkParams.put(SDKParamKey.CALLBACK_INFO, "{\"test\":true}");

      sdkParams.put(SDKParamKey.SERVER_ID, "1");

      sdkParams.put(SDKParamKey.ROLE_ID, "AAA");

      sdkParams.put(SDKParamKey.ROLE_NAME, "BBB");

      sdkParams.put(SDKParamKey.GRADE, "grade1");

      sdkParams.put(SDKParamKey.NOTIFY_URL, "");

      sdkParams.put(SDKParamKey.AMOUNT, "2.33");

      sdkParams.put(SDKParamKey.CP_ORDER_ID, "20160000101001");

      sdkParams.put(SDKParamKey.ACCOUNT_ID, "123");

      sdkParams.put(SDKParamKey.SIGN_TYPE, "MD5");

      sdkParams.put(SDKParamKey.SIGN, "遊戲服務器根據以上信息簽名後的結果");

      // 以上字段的值都須要由遊戲服務器生成

 

      try {

         UCGameSdk.defaultSdk().pay(MainActivity.this, sdkParams);

      } catch (IllegalArgumentException e) {

         // TODO Auto-generated catch block 參數錯

         e.printStackTrace();

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block activity null

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block 未初始化

         e.printStackTrace();

      }

   }

  

 

參數說明:

參數定義

參數名稱

類型

是否必填

說明

ROLE_ID

roleId

String

角色ID

ROLE_NAME

roleName

String

角色名稱

GRADE

grade

String

角色等級

CALLBACK_INFO

callbackInfo

String

cp自定義信息,在支付結果通知時回傳,CP能夠本身定義格式,長度不超過250

AMOUNT

amount

String

充值金額,若是傳遞爲0表示用戶能夠自定義充值金額,保留小數點後2位,單位爲元。例:10.00

SERVER_ID

serverId

String

服務器ID,默認爲0

NOTIFY_URL

notifyUrl

String

服務器通知地址,若是爲空以服務端配置地址做爲通知地址,長度不超過100

CP_ORDER_ID

cpOrderId

String

cp充值訂單號,須要保證用戶每次充值訂單號的惟一性,長度不超過30

ACCOUNT_ID

accountId

String

用戶id,充值用戶的統一帳號ID,由阿里遊戲平臺生成。

SIGN_TYPE

signType

String

簽名類型,MD5或者RSA

目前只支持MD5

SIGN

sign

String

簽名結果。

MD5(簽名內容+apiKey);服務端生成

簽名算法參考官方說明

 

接入提交遊戲角色數據信息:

數據提交時機:

一、用戶建立角色或已有角色進入遊戲後

二、當用戶的角色等級發生變化後

   private void sendUserInfo() {

      SDKParams sdkParams = new SDKParams();

        sdkParams.put(SDKParamKey.STRING_ROLE_ID, "roleId");

        sdkParams.put(SDKParamKey.STRING_ROLE_NAME, "roleName");

        sdkParams.put(SDKParamKey.LONG_ROLE_LEVEL, 1);

        sdkParams.put(SDKParamKey.STRING_ZONE_ID, "zoneId");

        sdkParams.put(SDKParamKey.STRING_ZONE_NAME, "serverId");

        sdkParams.put(SDKParamKey.LONG_ROLE_CTIME, 1456397360);

      try {

         sdk.submitRoleData(MainActivity.this, sdkParams);

      } catch (IllegalArgumentException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }

  

 

參數說明:

參數定義

參數名稱

類型

是否必填

說明

STRING_ROLE_ID

roleId

String

角色ID,長度不超過50

STRING_ROLE_NAME

roleName

String

角色名稱,長度不超過50

LONG_ROLE_LEVEL

roleLevel

Long

角色等級,長度不超過10

LONG_ROLE_CTIME

roleCTime

Long

角色建立時間(單位:秒),長度10,獲取服務器存儲的時間,不可用手機本地時間

STRING_ZONE_ID

zoneId

String

區服ID,長度不超過50

STRING_ZONE_NAME

zoneName

String

區服名稱,長度不超過50

 

登出與退出:登出爲註銷當前帳號,遊戲應返回登錄界面,退出爲關閉遊戲。

 

接入登出接口:

   private void logout(){

      try {

         sdk.logout(MainActivity.this, null);

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }

  

 

接入退出接口:

   private void exit() {

      try {

         sdk.exit(MainActivity.this, null);

      } catch (AliLackActivityException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (AliNotInitException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }

  

 

²  代碼混淆要求

若是遊戲發佈時採用proguard進行代碼混淆,請在proguard配置文件加入如下代碼,以免對SDK進行混淆,不然會形成SDK部分功能不正常。

 

-libraryjars './libs/alipay_sdk.jar'

-libraryjars './libs/ucgamesdk.jar'

 

-keep class android.**{

<methods>;

<fields>;

}

-keep class cn.uc.**{

<methods>;

<fields>;

}

-keep class com.alipay.**{

<methods>;
<fields>;
}

-keep class com.ta.**{

<methods>;
<fields>;
}

-keep class com.ut.**{
<methods>;
<fields>;
} 

-keep class org.json. **{
<methods>;
<fields>;
}

  

到這裏就是接入完畢了,添加相應UI控件出包就是一個接入渠道的demo了,若是和遊戲交互完成服務端接入完成,打包後就是成品啦,clean後到bin下面找 .apk包吧。

 

 

若是想了解更多,請關注咱們的blog和官網

http://www.typesdk.com/documents

http://blog.csdn.net/kasimshi

相關文章
相關標籤/搜索