首先我们需要把鸿蒙(Harmony)MeetingKit Zip包解压缩到本地目录。
集成MeetingKit之前请首先在DevEco创建您的项目,如果您已有DevEco项目,可直接集成。
接下来将采用一个空项目来介绍MeetingKit的集成流程。
首先把下载的压缩包文件解压,如下图:
其中 XYHMLibs文件夹内文件为小鱼鸿蒙SDK文件,建议使用时整体复制。
现在假设您的应用项目 XYApp, 您引用的第三方库的目录 libs, 如下图:
复制 XYHMLibs 文件夹内的所有 .har 文件到 上图工程中 libs 文件夹内:
打开 entry 目录下的 oh-package.json5, 添加以下内容:
"overrides": {
"@xylink/xyhmsdk": "file:./libs/xyhmsdk.har",
"@xylink/uikit": "file:./libs/uikit.har",
"@xylink/base": "file:./libs/base.har",
"@xylink/layout": "file:./libs/layout.har",
"@xylink/meetingkit": "file:./libs/meetingkit.har"
}
完整配置如下:
{
"name": "xyapp",
"version": "1.0.0",
"description": "Please describe the basic information.",
"main": "",
"author": "",
"license": "",
"dependencies": {
},
"overrides": {
"@xylink/xyhmsdk": "file:./libs/xyhmsdk.har",
"@xylink/uikit": "file:./libs/uikit.har",
"@xylink/base": "file:./libs/base.har",
"@xylink/layout": "file:./libs/layout.har",
"@xylink/meetingkit": "file:./libs/meetingkit.har"
},
"devDependencies": {
"@ohos/hypium": "1.0.16",
"@ohos/hamock": "1.0.0"
}
}
然后点击右上角 Sync Now, 登录结果完成。
完成以后打开 Index页面,添加以下代码:
import { Logger } from '@xylink/xyhmsdk/Index';
aboutToAppear(): void {
Logger.info('Index aboutToAppear')
}
如果正常没有报错, 说明正常集成。
export class XYSDKConfigInfo implements XYSDKConfig {
cloudServer: string = '';
openapiServer: string = '';
openapiToken: string = '';
logFolder: string = '';
useNativeCamera: boolean = false;
configLoginType: string = "";
forceApiGateway: boolean = false;
logFileName: string = 'xylog';
platformTag: string = 'HarmonyOS';
appType: XYSDKBusinessType = XYSDKBusinessType.Sdk;
appVersion: string = '3.3.0';
clientId: string = '';
clientSecret: string = '';
clientType: string = 'harmony_sdk';
osVersion: string = '';
hwVersion: string = '';
pemFile: string = '';
eid: string = '';
capture: number = 0;
render: number = 0;
useUnityLayout: boolean = true;
appDataDir: string = '';
supportCapabilities: boolean = true;
customKey: string = '';
logFilterKey: string = '';
logFilterKeyNum: string = '';
logFilterKeys: string = '';
cloudConfigJsonPath: string = "";
deviceType: number = 1;
deviceSn: string = XYDeviceInfoUtil.getODID().replaceAll("-", "");
ability: XYSDKAbilityType[] = [
XYSDKAbilityType.DynamicErrorCode,
XYSDKAbilityType.APIGateway,
XYSDKAbilityType.UnsafeHttpMethod
];
}
let xySdkConfig: XYSDKConfig = new XYSDKConfigInfo();
xySdkConfig.cloudServer = this.host;
xySdkConfig.clientId = this.clientId;
xySdkConfig.clientSecret = this.clientSecret;
xySdkConfig.eid = this.extId;
xySdkConfig.logFolder = getContext(this).filesDir;
xySdkConfig.appDataDir = getContext(this).filesDir;
const error = XYRTCEngine.getInstance().init(xySdkConfig)
XYMeetingKitImp.getInstance().startup();
/**
* 三方用户ID 登录
*/
loginExternalAccount(): void {
XYRTCEngine.getInstance().loginExternalAccount(this.userId, this.userName);
}
/**
* 登录状态回调
* @param loginState
* @param accountInfo
* @param error
*/
onLoginStateChanged(loginState: XYSDKLoginState, accountInfo: XYSDKAccountInfo, error: XYSDKError): void {
Logger.info(TAG, "onLoginStateChanged loginState: " + loginState + ",error: " + error);
if (loginState === XYSDKLoginState.LoggedIn) {
// ...
} else if (loginState === XYSDKLoginState.LoggingError || loginState === XYSDKLoginState.LoggedOut) {
XYToast.showToast(`错误码 ${error}`);
}
}
XYMeetingKitImp.getInstance().makeCall(callConfig);