知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
教你快速高效接入SDK——游戲接入SDK(只接入抽象框架)
發(fā)表時間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):76
題記:很多做游戲開辟的人,估計都或多或少地接過渠道SDK,什么UC,當樂,91,小米,360......據(jù)統(tǒng)計國內(nèi)市場當前不下于100家渠道,還包含一些沒有SDK的小渠道。每個渠道SDK接入的辦法呢,多是大年夜同小異。然則,恰是這些小異,又讓SDK的接入,產(chǎn)生了無窮無盡的變數(shù)。所以,接入SDK之前,如不雅你沒有經(jīng)驗,或者沒有被SDK坑過,那么當你看到這系列文┞仿的時刻,你很榮幸,你可以避免這一切了。如不雅你之前被坑過,并且還在持續(xù)被坑著,那么如今,就是你擺脫的時刻。
上一篇文┞仿我們說了全部U8 SDK抽象成的設(shè)計,那這篇文┞仿,我們就來驗證一下,他是否如我們等待的那樣,簡單靈活。
正如之前所說,對于每個游戲,只須要接入抽象層,而每個渠道SDK的接入,就是該抽象層的一個實現(xiàn)罷了。最后經(jīng)由過程一鍵打包對象來完成最后的產(chǎn)出。那么,我們先來看看,游戲怎么來調(diào)用這個抽象層。
我們假設(shè)我們已經(jīng)開辟了一款游戲,面對上線,須要接入SDK,須要接入UC,當樂,91,360,小米等渠道。因為采取U8 SDK同一接入框架的思惟,游戲工程本身不耦合具體的每個渠道SDK,而只是調(diào)用U8 SDK抽象層。那么,根據(jù)上一篇文┞仿談到的抽象層,我們就來看看若何調(diào)用。
起首,我們用eclipse新建一個android工程,作為我們這個模仿的游戲工程。這里須要說一下,如不雅你不是直接應(yīng)用Android開辟的游戲,而是采取像Unity3D,Cocos2D等游戲引擎,其接入也是一樣的。只是多了一層JNI調(diào)用。我們新建一個主運行的Activity:
package com.u8.sdk.demo; import com.u8.sdk.IU8SDKListener; import com.u8.sdk.LoginResult; import com.u8.sdk.PayParams; import com.u8.sdk.U8SDK; import com.u8.sdk.components.U8Pay; import com.u8.sdk.components.U8User; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); U8SDK.getInstance().setSDKListener(new IU8SDKListener() { @SuppressLint("ShowToast") @Override public void onResult(int arg0, String msg) { Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT); } @SuppressLint("ShowToast") @Override public void onLoginResult(LoginResult loginResult) { Toast.makeText(MainActivity.this, "登錄成功,sid:"+loginResult.getSid(), Toast.LENGTH_SHORT); } }); Button btn = (Button)findViewById(R.id.button1); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { pay(); } }); Button btnLogin = (Button)findViewById(R.id.button2); btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { login(); } }); U8SDK.getInstance().init(MainActivity.this); } private void login(){ U8SDK.getInstance().runOnMainThread(new Runnable() { @Override public void run() { U8User.getInstance().login(); } }); } private void pay(){ U8SDK.getInstance().runOnMainThread(new Runnable() { @Override public void run() { PayParams params = new PayParams(); params.setPrice(100); params.setServerId("1"); params.setRoleId("1"); U8Pay.getInstance().pay(params); } }); } public void onActivityResult(int requestCode, int resultCode, Intent data){ U8SDK.getInstance().onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); } public void onPause(){ U8SDK.getInstance().onPause(); super.onPause(); } public void onResume(){ U8SDK.getInstance().onResume(); super.onResume(); } public void onNewIntent(Intent newIntent){ U8SDK.getInstance().onNewIntent(newIntent); super.onNewIntent(newIntent); } public void onStop(){ U8SDK.getInstance().onStop(); super.onStop(); } public void onDestroy(){ U8SDK.getInstance().onDestroy(); super.onDestroy(); } public void onRestart(){ U8SDK.getInstance().onRestart(); super.onRestart(); } public void onBackPressed(){ U8SDK.getInstance().onBackPressed(); super.onBackPressed(); } }
大年夜家可以看到,在我們這個模仿的游戲中,接入SDK抽象層是一件多么Easy的工作,就是在onCreate瑯綾擎進行初始化操作:
U8SDK.getInstance().init(MainActivity.this);
同時,如我們之前所說,我們是基于監(jiān)聽器模式的設(shè)計,我們須要設(shè)置一個監(jiān)聽,當具體SDK有狀況變革,成功或者掉敗時,我們可以獲得具體的信息:
U8SDK.getInstance().setSDKListener(new IU8SDKListener() { @SuppressLint("ShowToast") @Override public void onResult(int arg0, String msg) { Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT); } @SuppressLint("ShowToast") @Override public void onLoginResult(LoginResult loginResult) { Toast.makeText(MainActivity.this, "登錄成功,sid:"+loginResult.getSid(), Toast.LENGTH_SHORT); } });
個中,onResult在調(diào)試的時刻,可以做一個Toast輸出。onLoginResult則是渠道SDK上岸成功時的回調(diào)。在這里就是須要去做我們之前全部上岸流程里的第四步(u8appid,sid)拜訪U8 Server獲取一個接下來上岸認證應(yīng)用的一個token。
如許,初始化就完畢了。然后,就是在須要調(diào)用上岸界面的處所,調(diào)用:
U8User.getInstance().login();
在須要調(diào)用付出界面的處所調(diào)用:
U8Pay.getInstance().pay(params);
須要留意的是,這些接口須要在UI 線程中調(diào)用,所以,我們須要應(yīng)用U8SDK.getInstance().runOnMainThread():
U8SDK.getInstance().runOnMainThread(new Runnable() { @Override public void run() { U8User.getInstance().login(); } });
最后,我們須要重寫Activity相干的體系事宜辦法,在對應(yīng)的辦法瑯綾擎,加上U8 SDK對應(yīng)辦法的調(diào)用。比如:
public void onPause(){ U8SDK.getInstance().onPause(); super.onPause(); }
如許,對于我們這個“游戲”來說,就算完成了SDK的接入了。大年夜家可以看到,對于游戲來說,接入是一件很簡便的事。它不消推敲后面怎么打包,怎么生成渠道包,怎么治理設(shè)備,怎么進級,。。。對于TA,到這里就停止了。接下來,我們就要看看,對于一個渠道來說,比如UC,我們怎么來接入到這套框架中來呢?
本文作者:小黑
相關(guān)案例查看更多
相關(guān)閱讀
- 汽車報廢
- 網(wǎng)站建設(shè)百度官方
- 電商網(wǎng)站建設(shè)
- 昆明小程序設(shè)計
- 云南小程序開發(fā)公司
- 云南軟件定制
- 云南網(wǎng)站建設(shè)公司排名
- 小程序定制
- 云南旅游網(wǎng)站建設(shè)
- 昆明網(wǎng)站開發(fā)
- 北京小程序開發(fā)
- 網(wǎng)站建設(shè)電話
- 日歷組件
- 網(wǎng)站建設(shè)優(yōu)化
- 高端網(wǎng)站建設(shè)公司
- 前端開發(fā)
- 網(wǎng)絡(luò)營銷
- 昆明小程序公司
- 云南網(wǎng)站建設(shè)百度官方
- 網(wǎng)站制作哪家好
- 云南網(wǎng)站建設(shè)哪家強
- 汽車報廢拆解管理系統(tǒng)
- 二叉樹
- 云南網(wǎng)絡(luò)推廣
- 微分銷
- 小程序設(shè)計
- 小程序被攻擊
- 汽車報廢軟件
- web學習路線
- 云南小程序開發(fā)推薦