TmkTranslationSDK 各接口调用关系文档
总体关系
releaseChannel 后:保留 sdkInit 配置和 verifyAuth 鉴权状态,但当前 room/channel 已释放,继续翻译需要重新 createTmkTranslationRoom、createTranslationChannel,然后再推音频。
destroy 后:全局配置和鉴权状态都会清空,继续使用必须从 sdkInit 重新开始。
iOS 调用关系

在线典型链路:
sdkInit
-> verifyAuth
-> createTmkTranslationRoom
-> createTranslationChannel(listener 可选)
-> SDK 内部 newChannel.start(...)
-> pushStreamAudioData
-> stop / room.closeRoom / releaseChannel / destroy
关键点:
-
sdkInit只保存全局配置并初始化日志,不等于鉴权完成,见TmkTranslationSDK.swift (line 91)。 -
verifyAuth会准备鉴权基础设施并更新鉴权状态,见TmkTranslationSDK.swift (line 111)。 -
createTmkTranslationRoom会创建/准备在线 dialog,成功后返回 room,见TmkTranslationSDK+RoomChannel.swift (line 48)。 -
createTranslationChannel会在内部调用newChannel.start,成功后替换 SDK 当前 channel,见TmkTranslationSDK+RoomChannel.swift (line 193)。 -
setTranslationListener只是替换 arena 回调,见TmkTranslationChannel.swift (line 204)。 -
pushStreamAudioData会在 channel 未 release 时直接推给 engine,见TmkTranslationChannel.swift (line 81)。 -
releaseChannel会释放 channel、取消 pending room、关闭服务端房间、清 workflow/telemetry,但保留全局配置和鉴权结果,见TmkTranslationSDK+RoomChannel.swift (line 374)。 -
destroy先调用releaseChannel,再清空globalConfig、auth 状态并停网络监听,见TmkTranslationSDK+RoomChannel.swift (line 428)。
Android 调用关系

在线典型链路有两个重载差异:
sdkInit
-> verifyAuth
-> createTmkTranslationRoom
-> createTranslationChannel(context, config, callback)
-> onSuccess 后业务调用 setTranslationListener
-> 业务调用 start
-> pushStreamAudioData
-> channel.destroy
-> SDK.releaseChannel
-> SDK.destroy
或:
sdkInit
-> verifyAuth
-> createTmkTranslationRoom
-> createTranslationChannel(context, config, listener, callback)
-> SDK 先绑定 listener,再内部 start
-> pushStreamAudioData
-> channel.destroy
-> SDK.releaseChannel
-> SDK.destroy
关键点:
-
sdkInit会设置isInitialized=true,重建 SDK scope,并重置 auth 状态,见TmkTranslationSDK.kt (line 85)。 -
verifyAuth要求已初始化,并初始化存储/诊断/网络监听,见TmkTranslationSDK.kt (line 100)。 -
createTmkTranslationRoom(config)成功后会保存currentRoom;如已有 room/channel,会先releaseChannel,见TmkTranslationSDK.kt (line 343)。 -
三参数
createTranslationChannel(context, config, callback)不自动 start;四参数带 listener 的重载会startAfterInit=true,见TmkTranslationSDK.kt (line 415)。 -
Android 文档也明确:三参数 onSuccess 后业务需要
setTranslationListener+start;四参数 SDK 会先绑定 listener 再启动,见android_api.md (line 473)。 -
pushStreamAudioData只有在isStarted且状态允许推流时才进入 engine,见TmkTranslationChannel.kt (line 218)。 -
releaseChannel会销毁当前 channel、清currentRoom、关闭服务端 room,并释放 telemetry;但不清globalConfig/isInitialized/auth,见TmkTranslationSDK.kt (line 1532)。 -
destroy会先releaseChannel,再销毁所有 channel、停网络、取消 scope、清 auth 和globalConfig,最后isInitialized=false,见TmkTranslationSDK.kt (line 1564)。
释放后的重建规则
-
room.closeRoom:iOS 有公开room.closeRoom;它关闭服务端房间,不等价于释放 channel。关闭后在线会话应按新房间重建。 -
channel.release/ Androidchannel.destroy:当前 channel 不可继续推音频,需要重新createTranslationChannel;在线通常也要确保 room 仍有效,否则重新createTmkTranslationRoom。 -
SDK.releaseChannel:明确回到“已初始化 + 已鉴权”的状态,需要重新建 room/channel。 -
SDK.destroy:回到未初始化状态,需要重新sdkInit -> verifyAuth -> create...。
注意
- iOS 先不要调用
channel.start和channel.stop函数。 - 销毁通道调用
channel.destroy(iOS 为release)。 - 关闭房间调用
room.closeRoom。 - 销毁对话引擎调用
releaseChannel。 - 如果业务层需要暂停对话,只需停止推送音频即可:SDK 会把已传入的音频数据处理完后,自动不再回调相关结果;但仍会持续监听引擎状态,保证引擎存活。
- 长时间不推送音频,30 分钟后房间会被释放。
- 网络异常时,20 分钟内网络恢复会自动重连。