[swift] CoreHaptics를 사용한 진동 및 터치 피드백 조절

iOS 앱을 개발하면서 터치 이벤트에 반응하여 사용자에게 피드백을 주는 것은 매우 중요합니다. iOS 13부터는 CoreHaptics 프레임워크를 사용하여 강력한 터치 피드백을 만들 수 있습니다. CoreHaptics는 소리, 진동 또는 터치와 같은 감각적 피드백을 제공하는 API입니다. 이러한 기능을 활용하여 앱의 사용자 경험을 향상시킬 수 있습니다.

CoreHaptics 기본 설정

CoreHaptics를 사용하려면 먼저 프로젝트에 CoreHaptics 프레임워크를 추가해야 합니다. 프로젝트의 설정에서 “CoreHaptics.framework”를 추가하고, 코드에서 CoreHaptics를 import 합니다.

import CoreHaptics

진동 생성 및 재생

CoreHaptics를 사용하여 기본적인 진동을 생성하고 재생하는 방법은 다음과 같습니다.

var engine: CHHapticEngine!

do {
    engine = try CHHapticEngine()
    try engine.start()
} catch {
    print("Error creating haptic engine: \(error)")
}

let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 1)
let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 1)
let event = CHHapticEvent(eventType: .hapticTransient, parameters: [intensity, sharpness], relativeTime: 0)

do {
    let pattern = try CHHapticPattern(events: [event], parameters: [])
    let player = try engine.makePlayer(with: pattern)
    try player.start(atTime: 0)
} catch {
    print("Error playing haptic pattern: \(error)")
}

위 코드는 새로운 CHHapticEngine을 생성하고 시작한 후, CHHapticPattern을 사용하여 간단한 진동 이벤트를 만들고 재생하는 방법을 보여줍니다.

터치 피드백 생성 및 제어

터치 피드백은 사용자가 화면에 터치를 한 경우에 생성됩니다. 다음은 CoreHaptics를 사용하여 터치 피드백을 설정하는 방법의 예제 코드입니다.

func prepareHaptics() {
    do {
        engine = try CHHapticEngine()
        try engine.start()
    } catch {
        print("Error creating haptic engine: \(error)")
    }
}

func playTouchHaptic() {
    let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 0.5)
    let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.5)
    let event = CHHapticEvent(eventType: .hapticTransient, parameters: [intensity, sharpness], relativeTime: 0)

    do {
        let pattern = try CHHapticPattern(events: [event], parameters: [])
        let player = try engine.makePlayer(with: pattern)
        try player.start(atTime: 0)
    } catch {
        print("Error playing touch haptic: \(error)")
    }
}

위의 코드에서는 prepareHaptics 함수를 사용하여 haptic engine을 생성하고 시작하고, playTouchHaptic 함수를 사용하여 터치 피드백을 생성하고 재생합니다.

CoreHaptics를 사용하여 iOS 앱에 진동 및 터치 피드백을 추가하는 것은 사용자 경험을 향상시키는 데 중요한 부분입니다. CoreHaptics의 다양한 기능을 활용하여 좀 더 생생하고 현실적인 터치 피드백을 구현할 수 있습니다.

더 자세한 내용은 Core Haptics - Apple Developer를 참고하세요.