From 1eb1ef985d875802e5333105eb81431f713ccb11 Mon Sep 17 00:00:00 2001 From: lanterngamescn Date: Sat, 27 Jun 2026 18:25:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=BD=95=E9=9F=B3):=20gameui=5Fplay/stop?= =?UTF-8?q?=5Fvoice=20=E7=9A=84=20user=20=E5=BC=BA=E8=BD=AC=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2(H5=E4=BC=A0=E6=95=B0=E5=AD=97=E5=BA=A7?= =?UTF-8?q?=E4=BD=8D=E5=8F=B7=E8=87=B4data=E4=B8=A2=E5=A4=B1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 真机日志:gameui_play_voice 回投消息无 data 字段,H5 handler 读 data[0] 报 TypeError(reading '0')、座位动画不播。根因:H5 以数字下发 user(座位号), number.length=undefined 致桥 doSend 判空丢弃 data。改为强转字符串,对齐 Android json.getString(user)+""+uservoice。参见 jsbridge-data-object-coercion 同类坑。 Co-Authored-By: Claude Opus 4.8 (1M context) --- feature_capabilities/src/main/ets/providers/AudioProvider.ets | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/feature_capabilities/src/main/ets/providers/AudioProvider.ets b/feature_capabilities/src/main/ets/providers/AudioProvider.ets index 2d3b2a8..c0a6186 100644 --- a/feature_capabilities/src/main/ets/providers/AudioProvider.ets +++ b/feature_capabilities/src/main/ets/providers/AudioProvider.ets @@ -133,7 +133,9 @@ export class AudioProvider implements CapabilityProvider { if (req.audiourl === '') { return; } - const user: string = req.user; + // user 可能被 H5 以数字(座位号)下发;须强转字符串再用于回投——对齐 Android json.getString("user")+""+uservoice。 + // 否则 number 的 .length 为 undefined,桥 doSend 判空丢弃 data → H5 gameui_play_voice 收到 undefined 报错(reading '0')、座位动画不播。 + const user: string = (req.user === undefined || req.user === null) ? '' : String(req.user); // 打断正在播的旧语音:先通知 H5 停旧座位动画,再释放(对齐"同一时刻只播一条")。 if (this.voicePlayer !== undefined && this.currentVoiceUser !== '') { this.bridge?.callHandler(OutboundHandlers.GameUiStopVoice, this.currentVoiceUser);