in HuggingSnap/Views/ContentView.swift [295:325]
func triggerHapticsOnFinish() {
guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return }
var events = [CHHapticEvent]()
// sharp tap
let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 1)
let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 1)
let event = CHHapticEvent(eventType: .hapticTransient, parameters: [intensity, sharpness], relativeTime: 0)
events.append(event)
// two soft taps
let intensity2 = CHHapticEventParameter(parameterID: .hapticIntensity, value: 0.6)
let sharpness2 = CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.4)
let event2 = CHHapticEvent(eventType: .hapticTransient, parameters: [intensity2, sharpness2], relativeTime: 0.1)
events.append(event2)
let intensity3 = CHHapticEventParameter(parameterID: .hapticIntensity, value: 0.3)
let sharpness3 = CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.2)
let event3 = CHHapticEvent(eventType: .hapticTransient, parameters: [intensity3, sharpness3], relativeTime: 0.2)
events.append(event3)
do {
let pattern = try CHHapticPattern(events: events, parameters: [])
let player = try engine?.makePlayer(with: pattern)
try player?.start(atTime: 0)
} catch {
print("Failed to play pattern: \(error.localizedDescription).")
}
}