Android SDK 基础功能

SDK 中相关异步/同步处理方法介绍

  • 同步方法:SDK 里大部分方法都为同步方法,即这个方法执行完毕,才会走后面的代码。
  • 异步方法:带有 callback 以及 API 注释里明确写明异步方法的方法,即不需要等这个方法走完,后边的代码就已经在执行了,通过 callback 得到方法执行的结果。

初始化 SDK

需要在自定义Application的onCreate()里做初始化,初始化时需要传入在露脸云开发者平台申请的AppKey。露脸云demo的AppKey是100000。

public class DemoApplication extends MultiDexApplication {
    CGSDKClient sdkUtil;    // sdk api interface
 
    @Override
    public void onCreate() {
        super.onCreate();
        Utils.BUILD_CONFIG_DEBUG_MODE = BuildConfig.DEBUG; // 如果是使用demo时,需要保留此行,如果开发者开发自己的项目时,删除此行
        /**
            CGSDKClient是开发者使用SDK的统一接口, 它的实例初始化需要通过CGSDKClientCreator来完成.
            CGSDKClientCreator可以配置一些额外的处理器到CGSDKClient中,
            如: new CGSDKClientCreator(this).configUILogicHandler(handler), 则配置界面逻辑处理器,
            开发者可以自己实现UILogicHandler接口, 并将实例传入configUILogicHandler(), 从而使用自定义的处理器,
            否则会使用SDK默认的处理器.
         */
        sdkUtil = new CGSDKClientCreator(this).create();
 
        // 初始化sdk, 第二个参数是AppKey, 开发者需要传入自己申请的AppKey
        sdkUtil.initialize(this, "100000");
    }
 
    @Override
    public void onTerminate() {
        super.onTerminate();
        // 停止SDK消息服务的心跳定时器
        sdkUtil.stopHeartBeatAlarm();
    }
}

在CGSDKClient完成初始化后,下次获取CGSDKClient实例只需要调用CGSDKClientImpl.getInstance()即可。

帐号注册

帐号注册由 APP 自己处理,注册帐号时 APP 服务端调用露脸云的接口创建用户对应的露脸云帐号,创建成功后会获取到露脸 UserID 和对应的 SessionID,这两个值需要返回给客户端,客户端以下接口中提到的 userID、peerUserID 及指露脸 UserID,SessionID及对应返回的 SessionID。

登录

当客户在自己的服务器上登录成功后,需要调用CGSDKClientImpl.getInstance().handleLoginFromThirdPartener(thirdUserId, v5Id, sessionId, nickname, avatar), 以便把登录用户添加到SDK中,并启动消息服务。

handleLoginFromThirdPartener()的参数说明:

  • thirdUserId 开发者自己生成的user id
  • v5Id 开发者在露脸云后台注册用户后得到的露脸云的用户id
  • sessionId 开发者调用露脸云后台登录成功得到的session id, 标识用户的登录
  • nickname 登录的用户昵称
  • avatar 登录的用户头像网络地址

开发者需要自己管理用户登录与注册,并在客户端记录登录状态,登录后下次启动不需要再显示登录页面,直接进入首页,这时开发者需要在首页的onResume()onCreate()方法里调用CGSDKClientImpl.getInstance().startMessageService()来启动SDK的消息服务。

退出登录

退出登录时调用CGSDKClientImpl.getInstance().logout()

单点登录

露脸云SDK,同一个账号同时只能在一台机器上登录,一台机器登录后,其它已经登录相同账号的机器会收到踢出消息。

开发者可以实现CGSDKClient.SystemListener接口,并调用CGSDKClientImpl.getInstance().addSystemListener(listener)即可监听踢出事件。

    interface SystemListener {
        /**
         * Called when current user is kicked off
         * @param showAlertDialog if need to show alert dialog
         */
        void onKickOff(boolean showAlertDialog);
 
        ...
    }

不用时需要调用CGSDKClientImpl.getInstance().removeSystemListener(listener),防止内存漏泄。

消息服务网络连接状态

SDK在CGSDKClient.SystemListener里提供了两个接口,以便开发者监听消息服务的网络连接状态。

interface SystemListener {
        ...
 
        /**
         * Called when message service tcp is connected
         */
        void onMessageServiceNetConnected();
 
        /**
         * Called when message service tcp is disconnected
         */
        void onMessageServiceNetDisconnected();
    }

onMessageServiceNetConnected()告诉开发者消息服务网络连接成功,onMessageServiceNetDisconnected()为消息服务网络连接失败。

此外还可以调用CGSDKClientImpl.getInstance().isMessageServiceNetConnected()来主动获取当前消息服务网络是否连接上。