From e3059304b416db157def4f42269c42311d6108c3 Mon Sep 17 00:00:00 2001 From: HycJack <772403255@qq.com> Date: Tue, 26 May 2026 02:18:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dios=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E9=9F=B3=E9=A2=91=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BC=91=E7=9C=A0=E6=97=B6=E6=AE=B5=E6=93=8D=E4=BD=9C=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=8A=A0=E6=8F=90=E7=A4=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- banban-mini/src/pages/chat/detail/index.tsx | 38 ++++++++++----------- talkingq-url/banban/middleware/auth.py | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/banban-mini/src/pages/chat/detail/index.tsx b/banban-mini/src/pages/chat/detail/index.tsx index 3b0866b..c4bf853 100644 --- a/banban-mini/src/pages/chat/detail/index.tsx +++ b/banban-mini/src/pages/chat/detail/index.tsx @@ -173,6 +173,7 @@ function getAudioUrlDebugInfo(rawUrl: string) { } catch { host = '' } + return { rawUrl, protocol: protocolMatch?.[1]?.toLowerCase() || '', @@ -249,31 +250,30 @@ export default function ChatDetail() { useEffect(() => { if (typeof Taro.createInnerAudioContext !== 'function') { - console.warn('[audio] InnerAudioContext unavailable', runtimeInfoRef.current) - return + console.warn('[audio] InnerAudioContext unavailable'); + return; } - const audioContext = Taro.createInnerAudioContext() - audioContextRef.current = audioContext + // 关键1: 忽略 iOS 静音开关 + Taro.setInnerAudioOption({ obeyMuteSwitch: false }); + + // 关键2: 使用 useWebAudioImplement 尝试绕过原生问题 + const audioContext = Taro.createInnerAudioContext({ + useWebAudioImplement: true, // 基础库 2.19.0+ + }); + audioContextRef.current = audioContext; audioContext.onEnded(() => { - console.info('[audio] ended', { playingMessageId: playingMessageIdRef.current }) - setPlayingMessageId(null) - }) + setPlayingMessageId(null); + }); audioContext.onStop(() => { - console.info('[audio] stopped', { playingMessageId: playingMessageIdRef.current }) - setPlayingMessageId(null) - }) + setPlayingMessageId(null); + }); audioContext.onError((error) => { - setPlayingMessageId(null) - console.error('[audio] error', { - playingMessageId: playingMessageIdRef.current, - src: audioContext.src, - error, - runtime: runtimeInfoRef.current, - }) - Taro.showToast({ title: '语音播放失败', icon: 'none' }) - }) + console.error('[audio] error detail:', JSON.stringify(error)); + setPlayingMessageId(null); + Taro.showToast({ title: `播放失败: ${error.errMsg || '错误'}`, icon: 'none' }); + }); audioContext.onPlay(() => { console.info('[audio] play event', { playingMessageId: playingMessageIdRef.current, src: audioContext.src }) }) diff --git a/talkingq-url/banban/middleware/auth.py b/talkingq-url/banban/middleware/auth.py index 152115c..9149399 100644 --- a/talkingq-url/banban/middleware/auth.py +++ b/talkingq-url/banban/middleware/auth.py @@ -187,7 +187,7 @@ def install_auth_middleware(app: FastAPI) -> None: if not await is_device_sleep(device_id): return JSONResponse( status_code=400, # 或 403 / 409 - content={"detail": f"设备 {device_id} 不在线或已配置睡眠时间,请稍后再试"} + content={"detail": f"设备不在线或在休眠中"} ) else: # 路径格式不符合预期,可以放行或返回错误(根据业务决定)