mobile v1.0.4:初始化步骤打点,超时可区分卡在 存储目录/建目录/SDK内核;初始化超时放宽到 30s(B-58)

This commit is contained in:
KIMI
2026-08-15 16:07:03 +08:00
parent a5b3a0e35f
commit 107325f6d1
3 changed files with 11 additions and 3 deletions
+3 -2
View File
@@ -80,9 +80,9 @@ class _LoginScreenState extends State<LoginScreen> {
password: password,
platformID: IMService.instance.platformID,
);
// 2. 初始化消息组件(分两步超时,方便定位卡在哪一步)
// 2. 初始化消息组件(分两步超时,方便定位卡在哪一步;老手机首次建库可能偏慢,放宽到 30 秒
await IMService.instance.init().timeout(
const Duration(seconds: 15),
const Duration(seconds: 30),
onTimeout: () => throw AuthException('消息组件初始化超时'),
);
// 3. 登录 OpenIM SDK
@@ -117,6 +117,7 @@ class _LoginScreenState extends State<LoginScreen> {
}
final sdkErr = IMService.instance.lastConnectError;
if (sdkErr != null && sdkErr.isNotEmpty) parts.add('消息组件报告:$sdkErr');
parts.add('初始化进行到哪一步:${IMService.instance.lastInitStep}');
if (mounted) setState(() => _error = parts.join('\n'));
// SDK 日志可能较大,异步读完后再补一行提示用户拍照
try {
+7
View File
@@ -130,11 +130,17 @@ class IMService extends ChangeNotifier {
});
}
/// 初始化进行到哪一步(超时时展示,区分卡在获取目录还是 SDK 内核)
String lastInitStep = '还没开始';
Future<void> _doInit() async {
lastInitStep = '① 获取存储目录';
final dir = await getApplicationDocumentsDirectory();
final dataDir = '${dir.path}/openim';
_dataDir = dataDir;
lastInitStep = '② 创建数据目录';
await Directory(dataDir).create(recursive: true);
lastInitStep = '③ 启动消息组件内核';
final ok = await OpenIM.iMManager.initSDK(
platformID: platformID,
apiAddr: apiAddr,
@@ -162,6 +168,7 @@ class IMService extends ChangeNotifier {
onUserTokenInvalid: _forceLogout,
),
);
lastInitStep = '④ 内核已返回(结果:$ok';
sdkReady = ok == true;
_setBusinessListeners();
notifyListeners();
+1 -1
View File
@@ -1,7 +1,7 @@
name: changlian
description: 畅联 —— 公司内部通讯 App(手机端)
publish_to: "none"
version: 1.0.3+4
version: 1.0.4+5
environment:
sdk: ">=3.6.0 <4.0.0"