Swift를 사용해 아이폰을 진동시키는 방법은 크게 두 가지가 있습니다. 하나는 AudioToolbox 프레임워크의 전통적인 방식이고, 다른 하나는 iOS 10 이상에서 지원되는 햅틱 피드백(Haptic Feedback) API입니다.
프로젝트 준비하기
먼저 새 프로젝트를 생성하고, 메인 뷰 컨트롤러에 네 개의 버튼을 추가합니다. 그다음 뷰 컨트롤러 클래스 상단에 AudioToolbox 프레임워크를 임포트해야 합니다.
import AudioToolbox
방법 1: AudioServicesPlayAlertSound 사용
첫 번째 버튼에 액션을 연결하고 아래 코드를 작성합니다.
@IBAction func actionButtonOne(_ sender: Any) {
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
}이 코드는 시스템 기본 진동 사운드를 재생하여 기기에서 긴 진동 피드백을 발생시킵니다. 오래된 iOS 버전과도 호환되는 가장 간단한 방식입니다.
방법 2: UIImpactFeedbackGenerator 사용 (iOS 10 이상)
iOS 10 이상을 지원하는 기기라면 더욱 세분화된 햅틱 피드백을 구현할 수 있습니다. 나머지 세 개의 버튼에 각각 다른 스타일의 진동 효과를 적용해 보겠습니다.
@IBAction func actionButtonTwo(_ sender: Any) {
let generator = UIImpactFeedbackGenerator(style: .heavy)
generator.impactOccurred()
}
@IBAction func actionButtonThree(_ sender: Any) {
let generator = UIImpactFeedbackGenerator(style: .light)
generator.impactOccurred()
}
@IBAction func actionButtonFour(_ sender: Any) {
let generator = UIImpactFeedbackGenerator(style: .medium)
generator.impactOccurred()
}위 세 메서드는 UIImpactFeedbackGenerator를 활용해 서로 다른 강도의 햅틱 피드백을 생성합니다. 각 스타일의 특징은 다음과 같습니다.
- .heavy: 강하고 무거운 느낌의 진동
- .light: 가볍고 섬세한 느낌의 진동
- .medium: 중간 강도의 부드러운 진동
실행 및 테스트
앱을 실제 기기에서 실행한 뒤 버튼을 누르면 각 버튼마다 서로 다른 진동 패턴을 느낄 수 있습니다. 아쉽게도 진동은 촉각적 피드백이기 때문에 화면으로 결과를 확인할 수는 없으며, 반드시 실제 디바이스에서 테스트해야 합니다. 시뮬레이터에서는 진동이 재현되지 않는다는 점도 참고하세요.