U8SDK——渠道SDK的接入

作者: 分类: U8SDK 发布时间: 2015-02-05 21:09 64条评论

上一篇(游戏接入SDK)我们展示了游戏在需要接入SDK时的调用。它仅仅调用抽象层提供的各个插件的单例包装类就可以了。而每个单例包装类里面,就是引用对应的插件接口。那么这个接口的实例化是怎么做了,上上一篇,我们说到,他是从asssets下面读取的配置。然后根据配置里填写的完整类名来实例化的。这个实现类就是在接入各个渠道的时候实现的。那么,本篇我们就来以UC渠道为例,将其接入到我们的U8 SDK中来。

首先,根据UC提供的文档,我们知道,需要接入登陆和支付两大功能。那么,对应的,在我们这里,我们就需要两个类,一个类实现抽象SDK的IUser接口,一个实现抽象SDK的IPay接口。那么,我们这里再回顾下,实现类需要注意的地方。在抽象层讲解的文章中,我们看各个插件的实例化过程:

我们可以看到,我们是调用实现类的带有一个Activity参数的构造函数进行实例化的。这就要求我们在实现插件接口的时候,需要定义一个带有Activity参数的构造函数。我们看看UC的登陆实现类和支付实现类。

支付:

我们先看上面的登陆插件实现类,可以看到它实现了login接口,同时,定义了一个以Activity为参数的构造函数。在login方法里面,通过调用UCSDK这个单例类的login来完成登陆界面的调用。同时,注意到,登陆实现类里面还有一个initSDK方法,在实例化的时候调用。这个是因为UC SDK要求必须在游戏刚开始运行的时候,就初始化SDK。

同样的,支付实现类里面,实现了pay方法,也是通过调用UCSDK单例来完成支付界面的调用。

那么,大家看到,现在所有的问题都简单化了。就是需要在UCSDK这个单例类里面来实现所有UC SDK需要实现的功能。我们先看下UCSDK里面的代码:

这个类似乎有点庞大。但是,没关系。我们慢慢地剥皮抽丝。首先,从我们实现类的调用入口进入。首先是initSDK。我们看看initSDK做了些什么.

initSDK首先进行了参数的解析:看UCUser的initSDK方法里面,我们通过U8SDK.getInstance().getSDKParams()方法获取到了当前SDK需要的参数。那么这些参数是什么呢。这些参数就是每个SDK在运行时,需要传入的参数。也就是你在接入渠道SDK之前,向渠道方申请的appID,appKey等信息。大家这里可能会有疑问,这些信息按说各个渠道都是不同的。这里怎么能通过抽象层获得到呢?说的没错,抽象层如何得到呢?这个要归功于我们后面要说的打包工具,我们会通过一个巧妙的设计来完成这一工作。这里你先知道,所有渠道的接入需要的appID等信息,这里都直接通过U8SDK.getInstance().getSDKParams()方法来获取就可以了。

紧接着,我们看到initSDK里面设置了U8SDK的IActivityListener接口。这是因为UC的SDK需要在activity的某些系统事件中完成相应的工作。

接下来,大家可以看到就是按照UC的Demo里面往下走就可以了。关键是初始化好之后的回调里,不管初始化成功还是失败,最好调用下U8SDK.getInstance().onResult()方法来向抽象层抛出一个状态信息。这样你在debug调试的时候,在游戏层实现的接口里加上输出或者Toast就可以及时看到这些状态信息,方便调试和查错。

然后,我们看login方法,login方法也一样,直接调用UC提供的登陆方法,关键是在登陆回调中,我们除了调用onResult方法之外,如果登陆成功,我们还需要调用U8SDK.getInstance().onLoginResult(result)方法。这个是因为游戏层会在onLoginResult中来处理登陆成功的回调,同时需要将SDK返回的数据封装到LoginResult类中。

最后,我们来看pay方法,pay方法也一样的简单。只是多了支付参数的解析。之前在说抽象层的实现时,我们说到了支付参数PayParams。这个类里所有的信息是游戏里面可以提供的。但是,每个渠道需要的可能各不相同。所以,这里各个渠道需要根据渠道自身的需要,按需所取。比如这里,我们通过decodePayParams方法从PayParams里面取到UC需要的参数。然后,同样的,我们在回调中调用onResult方法来提示状态信息。

对于其他的方法,向什么隐藏悬浮图标,显示悬浮图标都在UCSDK这里接入就可以了。需要在对应的地方加以调用。

那么,到这里我们UC SDK就算接入完毕了。接好之后他的目录结构大致如下:

目录结构

这里大家也许看到了工程里面,有sdk_confgi.xml和sdk_manifest.xml。这里,我们先留个悬念。后面我们说到打包工具的时候,在回头来说。因为这里大家可以看到,我们没有提SDK需要在AndroidManifest.xml中设置的权限信息和一些Activity或者Service等数据。也不知道这样接好了之后,然后怎么用呢,怎么测试,怎么维护呢?所有这些我们后面来说。

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=1425

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入