集成登录-Windows

简介

在做登录操作之前请先保证已经完成SDK初始化,你必须先集成登录才能实现通信等功能。

实现登录流程

1.创建并获取JCEngine实例

创建JCEngine请参考导入SDK。 获取JCEngine实例需要调用JCEngineManager.getInstance().getJCEngine();

2.登录

login 登录会首先查询用户名是否已经创建过帐号,如果没有,则创建帐号然后再发起登录服务器的操作。如果帐号已经存在,则直 接发起登录服务器的操作。

如果您已集成您自己的帐号体系,则终端流程与帐号已经存在的方式相同,将会直接发起登录。此时 JusTalk Cloud 服务器将向您的鉴权服务器发起鉴权请求。用户名将是帐号用户名的完整形式,帐号密码作为鉴权临时码。

例如,调用 mJCEngine.login 的 userId参数为 “alice”,您的域为 example.com,则鉴权请求中的用户名为 "[username:alice@example.com]"。鉴权临时码为 password 的值。

当前版本使用的是免鉴权系统。

  1. 登录操作调用如下接口

    mJCEngine.login(userId, password);
    
  2. 处理登录后回调

    当开发者调用login接口后,登录成功后界面会收到onConnected(string userId)的回调。界面可以在这个回调函数里做出界面处理。具体代码可以参考关键代码解析。

登录成功之后 SDK 会自动保持与服务器的连接状态。直到用户主动调用登出接口,或者因为帐号在其他设备登录导致该设备登出。现有帐号体系中一个用户名只能同时登录在一台设备上。后一个登录的设备登录成功之后,将会把前一个设备踢下线。

登录之后,您可以开始操作其他业务,具体集成请参考:Windows 集成通信

3.登出

登出操作调用登出接口:mJCEngine.logout();

4.查询登录状态

调用接口isOnline() 来查询当前登录状态, 接口返回true时,表示终端处于登录状态。返回false时,表示未登录。

关键代码解析

...
using JcApi.Api;
...

namespace MyLoginPresenter
{
    public class LoginPresenter
    {
        //登录界面view
        private ILoginControlView loginView;
        //JCEngine实例
        private JCEngine mJCEngine;
        //事件管理器
        private MyEventHandler mEventHandler;
        public LoginPresenter()
        {

        }
        //获取JCEngine实例
        protected JCEngine engine()
        {
            return JCEngineManager.getInstance().getJCEngine();
        }
        //获取事件管理器实例
        protected USEventHandler eventHandler()
        {
            return JCEngineManager.getInstance().getEventHandler();
        }
        //初始化
        public LoginPresenter(ILoginControlView iLoginView)
        {
            this.loginView = iLoginView;
            mJCEngine = engine();
            mEventHandler = new MyEventHandler(this);
            //添加事件管理器
            eventHandler().addEventHandler(mEventHandler);
        }
        //登录接口
        public void Login(string userId, string password)
        {
            mJCEngine.login(userId, password);
            ...
        }
        //销毁接口
        public void Dispose()
        {
            //登出
            mJCEngine.logout();
            //移除事件管理器
            eventHandler().removeEventHandler(mEventHandler);
            mJCEngine = null;
        }
        //事件管理器子类
        public class MyEventHandler : SimpleEventHandler
        {
            private LoginPresenter mLoginPresen
            public MyEventHandler(LoginPresenter baseLoginPresenter)
            {
                mLoginPresenter = baseLoginPresenter;
            }
            //登录成功的回调
            public override void onConnected(string userId)
            {
                //登录成功后的界面处理
                ...
            }
            ...
        }
    }

results matching ""

    No results matching ""