login method
Future<NEResult>
login(
- String appKey,
- String accountId,
- String token, {
- NECertificateConfig? certificateConfig,
- NEExtraConfig? extraConfig,
- NEGroupConfigParam? groupConfigParam,
Implementation
Future<NEResult> login(
String appKey,
String accountId,
String token, {
NECertificateConfig? certificateConfig,
NEExtraConfig? extraConfig,
NEGroupConfigParam? groupConfigParam,
}) async {
CallKitUILog.i(
_tag,
'CallManager login(appKey:$appKey, accountId:$accountId, certificateConfig:$certificateConfig, extraConfig:$extraConfig, groupConfigParam:$groupConfigParam) version:${Constants.pluginVersion}',
);
// 保存 appKey、extraConfig 和 groupConfigParam
_appKey = appKey;
_extraConfig = extraConfig ?? NEExtraConfig(); // 默认生成一个配置
if (groupConfigParam != null) {
_groupConfigParam = groupConfigParam;
}
CallKitUILog.i(
_tag,
'CallManager login: appKey saved = $_appKey, extraConfig = $_extraConfig, groupConfigParam = $_groupConfigParam',
);
late NIMSDKOptions options;
if (Platform.isAndroid) {
options = NIMAndroidSDKOptions(appKey: appKey);
//若需要使用云端会话,请提前开启云端会话
//enableV2CloudConversation: true,
} else if (Platform.isIOS) {
options = NIMIOSSDKOptions(
appKey: appKey,
//若需要使用云端会话,请提前开启云端会话
//enableV2CloudConversation: true,
apnsCername: certificateConfig?.apnsCername,
pkCername: certificateConfig?.pkCername,
);
} else if (Platform.isMacOS || Platform.isWindows) {
final sdkRootDir = await _resolveDesktopNimSdkRootDir();
CallKitUILog.i(
_tag,
'CallManager login: desktop nim sdkRootDir=$sdkRootDir',
);
options = NIMPCSDKOptions(
sdkRootDir: sdkRootDir,
basicOption: NIMBasicOption(),
appKey: appKey,
);
} else if (PlatformCompat.isOhos) {
options = NIMAndroidSDKOptions(appKey: appKey);
}
var initRet = await NimCore.instance.initialize(options);
if (initRet.code == 0) {
NEEventNotify().notify(imSDKInitSuccessEvent, {});
}
var result = NEResult(code: 0, message: 'success');
var imRet = await NimCore.instance.loginService.login(
accountId,
token,
NIMLoginOption(),
);
if (imRet.code == 0) {
NEEventNotify().notify(loginSuccessEvent, {
'accountId': accountId,
'token': token,
});
}
result = NEResult(code: imRet.code, message: imRet.errorDetails);
return result;
}