SDK 初始化-Windows

准备工作

  1. Visual Studio 2013或以上版本,请参考 https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx
  2. 需安装 Directx End-User Runtime Web,请参考 https://www.microsoft.com/zh-tw/download/details.aspx?id=35
  3. 需要在Visual Studio 2013或以上版本中建立WPF工程

下载SDK

进入官网下载SDK网页:http://justalkcloud.com/cn/download/#SDK。点击Windows SDK链接下载SDK

导入SDK

导入 SDK 具体步骤如下:

  1. 将压缩包解压后的 SDK/bin 目录中的 原生 dll(hpmpdll.dll,mtc.dll,mtcwrap.dll,sqlite3.dll,zmf.dll, dumper.dll, mtc.dll, )托管 dll(mtcmanaged.dll,zmfmanaged.dll)开发扩展dll(NetOffice.dll, Newtonsoft.Json.dll, OfficeApi.dll, PowerPointApi.dll)和集成通信dll(JCEngine.dll)文件复制到您的工程目录bin/Debug中,接下来需要将托管 dll 文件和模块化dll加入到 UI 项目的 References 中。bin/Debug 目录包含的dll文件如下图所示

2.在Solution Explorer中右键点击你的项目下的References,然后点击Add Reference...如下图所示

3.在打开的Reference Manager中按顺序进行下面的操作

4.在弹出的对话框内按顺序进行以下操作

5.最后点击Reference Manager中的OK按钮完成。

创建JCEngine实例

在使用SDK前都要先创建JCEngine实例。

APPKEY获取请参考如何创建你的应用

创建JCEngine实例调用 mJCEngine = JCEngine.create(app, appKey, mUSEventHandler);

销毁

在用完JCEngine的接口以后需要及时销毁以释放内存。

调用mJCEngine.destroy();

创建管理JCEngine的实体类

这个类的主要作用是管理JCEngine,界面可以直接调用此类来获取JCEngine的接口。 实体类应该包括创建和销毁JCEngine的方法,初始化事件管理器等。具体例子请看关键代码解析。

创建管理事件回调的实体类

这个类主要用来管理事件的回调,具体的事件包括:登录成功,加入房间成功,加入成员,更新成员状态,更新屏幕共享状态等。

实体类中应包括回调管理器LIST的维护,包括添加和移除管理器的方法。这个类中还应该包含一个空的实现JCEngineEventHandler的子类。

具体例子请看关键代码解析。

关键代码解析

JCEngineManager类用来管理JCEngine的创建和销毁

...
using JCEngine.Api;
...
namespace MyEngineManager
{
    public class JCEngineManager
    {
        //获取JCEgineManager实例
        public static JCEngineManager getInstance()
        {
            return JCEngineManagerHolder.INSTANCE;
        }

        private JCEngine mJCEngine;
        //事件管理器
        private USEventHandler mUSEventHandler;
        //构造器初始化事件管理器
        private JCEngineManager()
        {
            mUSEventHandler = new USEventHandler();
        }
        //创建JCEgine
        public void initialize(Application app, String appKey)
        {
            mJCEngine = JCEngine.create(app, appKey, mUSEventHandler);
        }
        //销毁JCEgine
        public void destroy()
        {
            if (mJCEngine != null)
            {
                mJCEngine.destroy();
                mJCEngine = null;
            }
            mUSEventHandler = null;
        }
        //获取JCEngine实例
        public JCEngine getJCEngine()
        {
            return mJCEngine;
        }
        //获取事件管理器实例
        public USEventHandler getEventHandler()
        {
            return mUSEventHandler;
        }

        private static class JCEngineManagerHolder
        {
            internal static JCEngineManager INSTANCE = new JCEngineManager();
        }

    }
}

USEventHandler事件回调管理器类

using JCEngine.Api;

namespace MyEngineManager
{
    //事件管理器类继承JCEngine.JCEngineEventHandler
    public class USEventHandler:JCEngine.JCEngineEventHandler
    {
        //事件回调管理器列表
        public List<SimpleEventHandler> mEventHandlers;
        //初始化
        public USEventHandler()
        {
            mEventHandlers = new List<SimpleEventHandler>();
        }
        //添加事件管理器
        public void addEventHandler(SimpleEventHandler eventHandler)
        { 
            mEventHandlers.Add(eventHandler);
        }
        //删除事件管理器
        public void removeEventHandler(SimpleEventHandler eventHandler)
        {
            mEventHandlers.Remove(eventHandler);
        }
        //重连回调
        public override void onReconnecting()
        {
            //遍历事件管理器列表,依次调用界面的回调
            foreach(SimpleEventHandler seh in mEventHandlers)
            {
                seh.onReconnecting();
            }
        }
        //登录成功回调
        public override void onConnected(string userId)
        {
            foreach(SimpleEventHandler seh in mEventHandlers)
            {
                seh.onConnected(userId);
            }
        }
        //加入房间成功回调
        public override void onJoinRoomSuccess() 
        {
            foreach(SimpleEventHandler seh in mEventHandlers)
            {
                seh.onJoinRoomSuccess();
            }
        }
        ...

    }
    //空的事件管理器实现类
    public class SimpleEventHandler: JCEngine.JCEngineEventHandler
    {
        public override void onReconnecting()
        {

        }

        public override void onConnected(string userId)
        {

        }
        public override void onJoinRoomSuccess() 
        {

        }
        ...
    }
}

启动页面的关键代码如下

...

using JCEngine.Api;
using MyEngineManager;

...

public partial class App : Application
    {

        private const string APPKEY = "************";
        //APP启动事件
        protected override void OnStartup(StartupEventArgs e)
        {
            ...

            base.OnStartup(e);
            //初始化JCEngine
            JCEngineManager.getInstance().initialize(this, APPKEY);
        }
        //APP退出事件
        protected override void OnExit(ExitEventArgs e)
        {
            base.OnExit(e);
            //退出时销毁JCEngine
            JCEngineManager.getInstance().destroy();
        }
    }

results matching ""

    No results matching ""