90a523736e50b6fbf89787f49b9d445d763ffa99
## 发现的根因 实测日志 mediaTypeAudio 进入了 native(amrFileCodec frame=107 打印两次确认 转码运行),但缺 gameui_play_voice 触发 log → canPlay=false 被短路。 原因是 voicePlaying handler 解析 H5 入参时类型不容忍。 之前实现: let on = (data?.asInt ?? 0) == 1 asInt 只对 BridgeData.number case 返回值。若 H5 传 string "1"(实测确实 会传)→ asInt 返回 nil → `?? 0 = 0` → `0 == 1 = false` → 开关被关闭。 daoqi 用 ObjC `[data intValue]`(NSString/NSNumber 都能转),永远能 正确处理两种类型。 ## 修复 VoicePlayingHandler:改用 asLooseString 比较 "1" 字符串,兼容 H5 传: - string "1" → asLooseString → "1" → on=true ✓ - number 1 → asLooseString → "1" → on=true ✓ - string "0" → asLooseString → "0" → on=false ✓ - number 0 → asLooseString → "0" → on=false ✓ - 其它 → on=false(保守拒绝) 同时加 log.debug 记录每次 voicePlaying 调用的 raw + 解析后值,便于后续 诊断 H5 业务行为。 ## 诊断辅助 RemoteAudioHandler.handleMediaTypeAudio 增加 log.debug: mediaTypeAudio user=X transcoded=Y canPlay=Z 让真机测试能直接看到 canPlay 实际值,避免再次盲猜。 ## 验证 BuildProject 通过 0 错误。真机重试 mediaTypeAudio 应能看到: voicePlaying H5 → raw=1 → isEnabled=true mediaTypeAudio user=0 transcoded=true canPlay=true gameui_play_voice user=0
Description
No description provided
24 MiB
Languages
Swift
94.5%
Objective-C++
2.9%
JavaScript
1.8%
C
0.6%
Objective-C
0.2%