이 글의 성격은 무엇인가요?
질문 / 문제 해결
내용을 설명해주세요
요약
동일한 번들 · 동일한 호출 코드로 iOS에서는 햅틱이 정상 동작하고, 안드로이드에서는 진동이 전혀 발생하지 않습니다.
환경
| 항목 | 값 |
|---|---|
| 미니앱 종류 | 웹 미니앱 (React Native 아님) |
| SDK | @apps-in-toss/web-framework@3.0.1 |
| 빌드 | vite 6.4.3, CSR, webBundleDir: "dist" |
| appName | glancebaseball |
permissions |
[] (빈 배열) |
| 기기 | Samsung Galaxy SM-S948N, Android 16 (API 36) |
| 토스 앱 | 5.270.1 |
| 실행 경로 | 라이브 미니앱 (intoss://glancebaseball) |
기기 설정도 확인했습니다.
settings get system haptic_feedback_enabled→1(터치 피드백 켜짐)settings get global zen_mode→0(방해금지 꺼짐)cmd vibrator_manager synced oneshot 250→ 정상 동작 (하드웨어 이상 없음)
호출 코드
가이드에 안내받은 형태 그대로입니다.
generateHapticFeedback({ type: ‘tickMedium’ });
증상
generateHapticFeedback 이 reject 하지 않고 정상 resolve 하는데 진동이 발생하지 않습니다.
타입을 바꿔 순차로 시도해도 전부 같습니다 — 모두 resolve, 모두 무반응입니다.
- tickWeak
- tickMedium
- basicMedium
- success
확인한 것들
- 브리지 자체는 살아 있습니다
같은 미니앱에서 아래는 정상 값을 반환합니다.
- getPlatformOS() → android
- getTossAppVersion() → 5.270.1
-
Device.triggerHaptic 과 동일한 함수입니다
런타임에서 확인했습니다.
generateHapticFeedback === Device.triggerHaptic // → true
// 양쪽 모두: (options) => callAsyncMethod(“generateHapticFeedback”, options)
빌드 산출물에서도 같은 브리지로 들어가는 것을 확인했습니다. 따라서 Device.triggerHaptic
으로 바꿔도 동작이 동일합니다. -
웹 Vibration API 도 무반응입니다
navigator.vibrate 가 존재하고 false 도 반환하지 않는데, 300ms 를 발사해도 울리지 않습니다
질문
-
안드로이드 웹뷰에서 SDK 햅틱과 navigator.vibrate 가 모두 무반응인 점으로 보아 웹뷰의 오디오/진동 세션 설정 문제로 보입니다. 대응 방법이 있을까요?
-
resolve 가 실제 진동을 보장하지 않는데, 지원 여부를 판별할 방법이 있을까요?
appName (선택)
glancebaseball