跳到主要内容
版本:Latest

生命周期与工具

资源释放与生命周期

releaseChannel()

public func releaseChannel()

说明:

  • 释放当前翻译通道与当前会话相关资源。

  • 会停止并释放当前通道引擎,取消未完成建房请求,异步关闭当前在线房间,并清理离线模型下载管理器等会话状态。

  • 不会清空 sdkInit 的全局配置,也不会清空鉴权状态。

  • 释放后可以重新创建新通道。

  • 在线模式下,如果当前通道绑定了已创建的房间,SDK 会 fire-and-forget 调用关房流程;业务侧不需要再对同一房间重复调用 closeRoom(...)

destroy()

public func destroy()

说明:

  • 释放全局资源。

  • 会释放当前通道、清空鉴权状态、清空全局配置、关闭诊断与网络监听。

  • 调用后如果要继续使用 SDK,必须重新执行 sdkInit(_:)

建议
  • 页面级退出当前翻译会话时,优先使用 releaseChannel()
  • 应用彻底退出 SDK 使用场景时,再调用 destroy()

可取消请求句柄

TmkSDKCancellable

public protocol TmkSDKCancellable {
func cancel()
}

说明:

  • 用于取消未完成的异步请求,例如语言列表请求、房间关闭请求等。

TmkAnySDKCancellable

public final class TmkAnySDKCancellable: TmkSDKCancellable {
public init(onCancel: @escaping () -> Void)
public func cancel()
}

一般业务方不需要主动创建,通常只需要持有 SDK 返回的 TmkSDKCancellable? 即可。


PCM 工具

TmkTranslationPCMTools 提供常用 PCM 工具方法:

public enum TmkTranslationPCMTools {
public static func mixStereo16LE(left: Data, right: Data) -> Data?
public static func mixMonoToStereo16LE(mono: Data, isLeft: Bool) -> Data?
public static func splitStereoInterleaved16LE(_ stereo: Data) -> (left: Data, right: Data)?
public static func pcm16LEToFloat(_ data: Data) -> [Float]
public static func floatToPCM16LE(_ samples: [Float]) -> Data
}

用途说明:

  • mixStereo16LE(left:right:)

    • 将左右单声道 PCM 合成为立体声交错 PCM。
  • mixMonoToStereo16LE(mono:isLeft:)

    • 把单声道复制到左或右声道,生成立体声。
  • splitStereoInterleaved16LE(_:)

    • 将立体声交错 PCM 拆成左右单声道。
  • pcm16LEToFloat(_:)

    • 16-bit PCM 转浮点数组。
  • floatToPCM16LE(_:)

    • 浮点数组转 16-bit PCM。

诊断能力

getDiagnosisDirectoryURL()

public func getDiagnosisDirectoryURL() -> URL?

返回值:

  • 诊断目录 URL。

  • 如果当前没有诊断目录,返回 nil。

说明:

  • 只有在 setDiagnosisEnabled(true) 后,SDK 才会产生诊断文件。

  • 目录中可能包含日志、诊断音频等排障信息。

  • 分享或上传前,建议由业务方确认数据合规。

  • 如需上传诊断目录,建议业务侧先完成用户授权、脱敏和访问控制。

诊断数据脱敏

诊断日志可能包含 licenseId、错误码、模型版本、包名和耗时等排障字段;不应包含原始 License、clientSecret、设备私钥或完整用户隐私数据。

示例:

guard let diagnosisURL = TmkTranslationSDK.shared.getDiagnosisDirectoryURL() else {
return
}
print(diagnosisURL)

数据安全与凭据管理

凭据安全
  • appId / clientSecret 是业务鉴权凭据,建议通过独立配置或 CI 注入,避免写入公开仓库。
  • clientSecret 会参与本地 License 加密/解密,变更后旧 License 可能无法继续解密。SDK 会尝试重新请求 License;如果设备处于离线状态,业务侧应提示用户联网后重新调用 verifyAuth(_:)
  • 设备密钥由 tmk-offline 组件维护,密钥 tag 通过组件接口获取。业务侧不应硬编码 tag,也不应在 Release 版本调用调试清理能力。