- 톡(짧게)/톡톡/드르륵/지잉(길게, 0.3s 겹침으로 끊기지 않는 긴 진동) — 사용자 피드백 '한 번·두 번 방식은 아니고 간격도 길다' 반영, 연타 간격 0.5s로 단축 - 기본값: 수축=지잉(조이고 유지), 이완=톡(탁 풀기) — 첫 진동 즉시 구분 - 워치는 반복 재생 대신 패턴별 단일 시스템 햅틱(.start/.directionUp/.retry/.notification) — 워치 연타 뭉개짐·긴 간격 문제 자체를 제거 - 구버전 저장값(once/twice/thrice/heartbeat) 자동 이관, 라벨 3언어 번역·stale 정리 - 검증: Debug·Release·워치 빌드 그린, 세팅 화면 QA, 카탈로그 missing·stale 0 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UPmp29DQHY6Ahfss5SRopT
30 lines
906 B
Swift
30 lines
906 B
Swift
//
|
|
// WatchHaptics.swift
|
|
// KegingWatch Watch App
|
|
//
|
|
// 진동 패턴 재생 (워치) — 반복 재생 대신 패턴마다 성격이 다른 시스템 햅틱 1회로
|
|
// 즉시 구분되게 한다 (연타는 워치에서 뭉개져 간격만 길어지던 문제의 해소)
|
|
//
|
|
|
|
import WatchKit
|
|
|
|
@MainActor
|
|
enum WatchHaptics {
|
|
static func play(_ pattern: HapticPattern) {
|
|
WKInterfaceDevice.current().play(hapticType(for: pattern))
|
|
}
|
|
|
|
static func playSuccess() {
|
|
WKInterfaceDevice.current().play(.success)
|
|
}
|
|
|
|
private static func hapticType(for pattern: HapticPattern) -> WKHapticType {
|
|
switch pattern {
|
|
case .short: .start // 단타
|
|
case .doubleTap: .directionUp // 두 단계로 올라가는 느낌
|
|
case .rattle: .retry // 연타 질감
|
|
case .long: .notification // 길고 묵직한 알림
|
|
}
|
|
}
|
|
}
|