微信分享去sdk
This commit is contained in:
@@ -261,12 +261,11 @@ public enum RemoteAudioHandler {
|
||||
return // 参数不全 → 不触发 cb(对齐 daoqi 入参空时走到 file 不存在 return)
|
||||
}
|
||||
|
||||
// 2. 记录 lastUserId(无论是否实际播放都更新,对齐 daoqi
|
||||
// `self.User_id = userid;` 总是执行的行为)
|
||||
VoicePlayer.shared.recordIncomingUser(user)
|
||||
|
||||
// 3. 注册 VoicePlayer.onFinish(每次 mediaTypeAudio 更新,绑定当前 bridge;
|
||||
// [weak bridge] 让 bridge 释放后 onFinish 自动失效)
|
||||
// 2. 注册 VoicePlayer.onFinish(每次 mediaTypeAudio 更新,绑定当前 bridge;
|
||||
// [weak bridge] 让 bridge 释放后 onFinish 自动失效)。
|
||||
// onFinish 触发时机:自然结束 / 解码失败 / 被新一次 play 打断;
|
||||
// payload `finishedUser` 是被结束 / 被打断那条语音绑定的 user
|
||||
// (由 VoicePlayer 内部 currentUser 跟踪),不是入参里最新的 user。
|
||||
VoicePlayer.shared.onFinish = { [weak bridge] finishedUser in
|
||||
Task { @MainActor in
|
||||
bridge?.call(
|
||||
@@ -277,7 +276,7 @@ public enum RemoteAudioHandler {
|
||||
}
|
||||
}
|
||||
|
||||
// 4. 异步下载 AMR
|
||||
// 3. 异步下载 AMR
|
||||
let amrData: Data
|
||||
do {
|
||||
let (d, _) = try await URLSession.shared.data(from: downloadURL)
|
||||
@@ -288,7 +287,7 @@ public enum RemoteAudioHandler {
|
||||
// `if (![[NSFileManager defaultManager] fileExistsAtPath:filename]) return;`)
|
||||
}
|
||||
|
||||
// 5. 写到沙盒 .amr 临时文件
|
||||
// 4. 写到沙盒 .amr 临时文件
|
||||
let tempName = VoiceRecorder.currentTimeString()
|
||||
let docs = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
|
||||
let amrLocal = docs.appendingPathComponent(tempName).appendingPathExtension("amr")
|
||||
@@ -300,7 +299,7 @@ public enum RemoteAudioHandler {
|
||||
return
|
||||
}
|
||||
|
||||
// 6. AMR → WAV 转码
|
||||
// 5. AMR → WAV 转码
|
||||
// daoqi 文件名约定:tempName + "_AmrToWav.wav"(NewRootVC.m:341)
|
||||
let wavLocal = docs
|
||||
.appendingPathComponent("\(tempName)_AmrToWav")
|
||||
@@ -317,14 +316,16 @@ public enum RemoteAudioHandler {
|
||||
transcoded = false
|
||||
}
|
||||
|
||||
// 7. voicePlaying 总开关 + 实际播放 + gameui_play_voice
|
||||
// 6. voicePlaying 总开关 + 实际播放 + gameui_play_voice
|
||||
// (仅转码成功 + 开关 enabled 时触发,对齐 daoqi
|
||||
// NewRootVC.m:343-353 if (canbofang) { play + callHandler })
|
||||
// NewRootVC.m:343-353 if (canbofang) { play + callHandler })。
|
||||
// 若当前已有正在播放的 player,VoicePlayer.play 会先停旧 player 并
|
||||
// 通过 onFinish 反向调 gameui_stop_voice 让 H5 停旧动画,再起新播放。
|
||||
let canPlay = await VoiceCenter.shared.isEnabled
|
||||
log.debug("mediaTypeAudio user=\(user, privacy: .public) transcoded=\(transcoded, privacy: .public) canPlay=\(canPlay, privacy: .public)")
|
||||
if transcoded, canPlay {
|
||||
do {
|
||||
try VoicePlayer.shared.play(wavLocal)
|
||||
try VoicePlayer.shared.play(wavLocal, user: user)
|
||||
// gameui_play_voice 数据是 user 字符串(非 dict)
|
||||
bridge.call(
|
||||
"gameui_play_voice",
|
||||
@@ -337,7 +338,7 @@ public enum RemoteAudioHandler {
|
||||
}
|
||||
}
|
||||
|
||||
// 8. 触发 mediaTypeAudio cb(对齐 daoqi NewRootVC.m:357,**总是**触发
|
||||
// 7. 触发 mediaTypeAudio cb(对齐 daoqi NewRootVC.m:357,**总是**触发
|
||||
// 即使转码失败 / canbofang=NO 都触发;仅下载失败的 return 路径不触发)
|
||||
callback?(.string("Response from mediaTypeAudio"))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user