上文中已介紹了環境與軟件的安裝配置(參見該網址: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和官網