SDK 初始化-Windows
准备工作
- Visual Studio 2013或以上版本,请参考 https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx
- 需安装 Directx End-User Runtime Web,请参考 https://www.microsoft.com/zh-tw/download/details.aspx?id=35
- 需要在Visual Studio 2013或以上版本中建立WPF工程
下载SDK
进入官网下载SDK网页:http://justalkcloud.com/cn/download/#SDK。点击Windows SDK链接下载SDK
导入SDK
导入 SDK 具体步骤如下:
- 将压缩包解压后的 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();
}
}