Copyright © 2025 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
이 섹션은 문서가 공개된 시점에서의 상태를 설명합니다. 현재 W3C 출판물 목록과 이 기술 보고서의 최신 개정판은 W3C 기술 보고서 색인에서 https://www.w3.org/TR/에서 확인할 수 있습니다.
이 문서는 Vibration API의 범위와 기능에 대해 그룹의 합의된 내용을 나타냅니다. 그룹은 이 첫 번째 버전으로는 실현할 수 없는 더 발전된 사용 사례가 있다는 점을 인지하고 있습니다. 이러한 사례들은 향후 개정판에서 다룰 예정입니다.
이전 버전에서 변경 사항의 이력이 제공됩니다.
이 문서는 디바이스 및 센서 워킹 그룹에서 권고안 트랙을 통해 후보 권고 초안으로 공개되었습니다.
후보 권고로 공개되었다고 해서 W3C 및 회원사의 지지를 의미하지는 않습니다. 후보 권고 초안에는 워킹 그룹이 추후 후보 권고 스냅샷에 포함할 계획인 이전 후보 권고의 변경 사항이 통합됩니다.
이 문서는 초안이며 언제든지 다른 문서에 의해 업데이트, 대체 또는 폐기될 수 있습니다. 진행 중인 작업 외의 용도로 이 문서를 인용하는 것은 적절하지 않습니다.
이 문서는 W3C 특허 정책에 따라 운영되는 그룹에 의해 작성되었습니다. W3C는 공개 특허 공개 목록을 그룹의 산출물과 관련하여 유지하고 있습니다. 해당 페이지에는 특허 공개에 대한 안내도 포함되어 있습니다. 특정 특허가 필수 청구항을 포함한다고 실제로 아는 개인은 W3C 특허 정책 섹션 6에 따라 정보를 공개해야 합니다.
이 문서는 2023년 11월 3일 W3C 프로세스 문서에 따라 관리됩니다.
이 섹션은 비규범적입니다.
이 API는 단순한 촉각 피드백만을 필요로 하는 사용 사례를 위해 특별히 설계되었습니다. 더 세밀한 제어가 필요한 사용 사례는 이 명세의 범위에 포함되지 않습니다. 이 API는 일반적인 알림 메커니즘으로 사용하기 위한 것이 아닙니다. 이러한 사용 사례는 Notifications API [NOTIFICATIONS] 명세를 통해 처리할 수 있습니다. 또한 진동이 활성화되어 있는지 여부를 확인하는 것은 이 명세의 범위에 포함되지 않습니다.
비규범적으로 표시된 섹션뿐만 아니라, 이 명세서의 모든 작성 지침, 도표, 예시, 주석은 비규범적입니다. 그 외의 모든 내용은 규범적입니다.
이 문서의 MAY, MUST, SHOULD라는 키워드는 BCP 14 [RFC2119] [RFC8174] 에 설명된 대로, 그리고 반드시 대문자로 표시된 경우에만 해석됩니다.
이 명세는 하나의 제품에 적용되는 적합성 기준을 정의합니다: 이 명세에 포함된 인터페이스를 구현하는 user agent입니다.
이 명세에서 정의된 API를 ECMAScript로 구현하는 경우, Web IDL 명세 [WEBIDL-1]에 정의된 ECMAScript 바인딩에 따라 구현해야 합니다. 이 명세서는 해당 명세와 용어를 사용합니다.
WebIDLtypedef (unsigned long or sequence<unsigned long>) VibratePattern;
vibrate()
메서드는 진동 패턴 처리 알고리즘을 실행합니다.
진동 패턴은
VibratePattern 객체로 표현됩니다.
진동 패턴 처리의 규칙은 다음 알고리즘에 따릅니다:
vibrate()
메서드의 첫 번째 인자로 지정합니다.
visible이 아니면 false를 반환하고 종료합니다.
검증 및 정규화를 진동 패턴 pattern에 대해 수행하려면, 다음 단계로 진행합니다:
진동 수행을 global object global 및 진동 패턴 pattern을 사용하여 수행하려면, 다음 단계로 진행합니다:
user agent가
visibility state가
top-level
browsing context의 Document에서 변경되었다고 판단하면,
이미 실행 중인 진동 패턴 처리 알고리즘을 중단해야 합니다(MUST).
Vibration API 자체는 데이터를 생성하지 않으므로 웹에서 소비할 수 있는 데이터를 직접 제공하지 않습니다. 하지만 다른 API의 이벤트 소스로 활용될 수 있는 것이 알려져 있습니다. 특히, 가속도계나 자이로스코프와 같은 특정 센서는 제조 과정에서 미세한 불완전성을 가질 수 있습니다. 이로 인해 진동 API를 통해 생성된 진동 자극을 이용해 이러한 센서가 지문(surface)이 되어 정보가 악용될 수 있습니다. 이런 관점에서 Vibration API는 다른 메커니즘과 결합될 때 간접적으로 개인정보 위험을 제공합니다. 이는 예상치 못한 개인정보 위험(디바이스 간 추적, 통신 등)을 유발할 수 있습니다. 또한 진동 중인 디바이스는 외부 관찰자에게 물리적으로 식별될 수 있고, 사용자의 추적이 가능해질 수 있습니다.
이러한 이유로 user agent는 API가 사용될 때 사용자에게 알리고, API를 원천적으로(혹은 origin별로) 비활성화(실질적으로 아무 동작도 하지 않도록)할 수 있는 메커니즘을 제공할 수 있습니다(MAY).
user agent는 일정 기간(예: 1분 또는 1시간 등) 내에 진동 요청 횟수를 제한함으로써 과도한 사용을 방지하기 위해 글로벌 레이트 리미팅을 적용해야 합니다(SHOULD).
이 섹션은 비규범적입니다.
아래 예제에서는 디바이스가 1000밀리초(ms) 동안 진동합니다:
// 1000ms 동안 진동
navigator.vibrate(1000);
// 또는
navigator.vibrate([1000]);
다음 예제에서는 패턴에 따라 디바이스가 50ms 진동, 100ms 정지, 150ms 진동합니다:
navigator.vibrate([50, 100, 150]);
다음 예제는 기존의 모든 진동을 취소합니다:
// 기존 진동 취소
navigator.vibrate(0);
// 또는
navigator.vibrate([]);
그룹은 Justin Lebar, Mounir Lamouri, Jonas Sicking, 그리고 Mozilla WebAPI 팀의 기여와 WebVibrator 프로토타입을 초기 입력으로 제공해주신 점에 깊이 감사드립니다. Anne van Kesteren께서는 명세가 다른 문맥에서도 재사용될 수 있도록 제안해주셨고, Lukasz Olejnik께서는 개인정보 보호 고려사항에 대해 도움을 주셨습니다. 마지막으로 Zhiqiang Zhang께서는 간체 중국어 번역에 감사드립니다.
W3C 권고안 2016년 10월 18일 이후 변경 사항:
문서 해석에 기능적으로 영향을 미치지 않는 기타 변경 사항:
WebIDLtypedef (unsigned long or sequence<unsigned long>) VibratePattern;
partial interface Navigator {
boolean vibrate (VibratePattern pattern);
};