跳到主要内容
版本:v1.2.0

TmkTranslationSDK 各接口调用关系文档

总体关系

releaseChannel 后:保留 sdkInit 配置和 verifyAuth 鉴权状态,但当前 room/channel 已释放,继续翻译需要重新 createTmkTranslationRoomcreateTranslationChannel,然后再推音频。

destroy 后:全局配置和鉴权状态都会清空,继续使用必须从 sdkInit 重新开始。

iOS 调用关系

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 调用关系

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 / Android channel.destroy:当前 channel 不可继续推音频,需要重新 createTranslationChannel;在线通常也要确保 room 仍有效,否则重新 createTmkTranslationRoom

  • SDK.releaseChannel:明确回到“已初始化 + 已鉴权”的状态,需要重新建 room/channel。

  • SDK.destroy:回到未初始化状态,需要重新 sdkInit -> verifyAuth -> create...

注意

  1. iOS 先不要调用 channel.startchannel.stop 函数。
  2. 销毁通道调用 channel.destroy(iOS 为 release)。
  3. 关闭房间调用 room.closeRoom
  4. 销毁对话引擎调用 releaseChannel
  5. 如果业务层需要暂停对话,只需停止推送音频即可:SDK 会把已传入的音频数据处理完后,自动不再回调相关结果;但仍会持续监听引擎状态,保证引擎存活。
  6. 长时间不推送音频,30 分钟后房间会被释放。
  7. 网络异常时,20 分钟内网络恢复会自动重连。