教你快速高效接入SDK——游戏接入SDK(只接入抽象框架) - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

教你快速高效接入SDK——游戏接入SDK(只接入抽象框架)

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:42


题记:很多做游戏开辟的人,估计都或多或少地接过渠道SDK,什么UC,当乐,91,小米,360......据统计国内市场当前不下于100家渠道,还包含一些没有SDK的小渠道。每个渠道SDK接入的办法呢,多是大年夜同小异。然则,恰是这些小异,又让SDK的接入,产生了无穷无尽的变数。所以,接入SDK之前,如不雅你没有经验,或者没有被SDK坑过,那么当你看到这系列文┞仿的时刻,你很荣幸,你可以避免这一切了。如不雅你之前被坑过,并且还在持续被坑着,那么如今,就是你摆脱的时刻。



上一篇文┞仿我们说了全部U8 SDK抽象成的设计,那这篇文┞仿,我们就来验证一下,他是否如我们等待的那样,简单灵活。
正如之前所说,对于每个游戏,只须要接入抽象层,而每个渠道SDK的接入,就是该抽象层的一个实现罢了。最后经由过程一键打包对象来完成最后的产出。那么,我们先来看看,游戏怎么来调用这个抽象层。
我们假设我们已经开辟了一款游戏,面对上线,须要接入SDK,须要接入UC,当乐,91,360,小米等渠道。因为采取U8 SDK同一接入框架的思惟,游戏工程本身不耦合具体的每个渠道SDK,而只是调用U8 SDK抽象层。那么,根据上一篇文┞仿谈到的抽象层,我们就来看看若何调用。
起首,我们用eclipse新建一个android工程,作为我们这个模仿的游戏工程。这里须要说一下,如不雅你不是直接应用Android开辟的游戏,而是采取像Unity3D,Cocos2D等游戏引擎,其接入也是一样的。只是多了一层JNI调用。我们新建一个主运行的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);



同时,如我们之前所说,我们是基于监听器模式的设计,我们须要设置一个监听,当具体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在调试的时刻,可以做一个Toast输出。onLoginResult则是渠道SDK上岸成功时的回调。在这里就是须要去做我们之前全部上岸流程里的第四步(u8appid,sid)拜访U8 Server获取一个接下来上岸认证应用的一个token。
如许,初始化就完毕了。然后,就是在须要调用上岸界面的处所,调用:

U8User.getInstance().login();

在须要调用付出界面的处所调用:

U8Pay.getInstance().pay(params);

须要留意的是,这些接口须要在UI 线程中调用,所以,我们须要应用U8SDK.getInstance().runOnMainThread():

    	U8SDK.getInstance().runOnMainThread(new Runnable() {
			
			@Override
			public void run() {
				U8User.getInstance().login();
			}
		});



最后,我们须要重写Activity相干的体系事宜办法,在对应的办法琅绫擎,加上U8 SDK对应办法的调用。比如:

	public void onPause(){
		U8SDK.getInstance().onPause();
		super.onPause();
	}



如许,对于我们这个“游戏”来说,就算完成了SDK的接入了。大年夜家可以看到,对于游戏来说,接入是一件很简便的事。它不消推敲后面怎么打包,怎么生成渠道包,怎么治理设备,怎么进级,。。。对于TA,到这里就停止了。接下来,我们就要看看,对于一个渠道来说,比如UC,我们怎么来接入到这套框架中来呢?
本文作者:小黑






相关案例查看更多