티스토리 뷰

728x90
반응형

내용

  • shake motion 을 인식해서 화면전환 시 진동 추가

시작 전

진동 기능을 추가하기 위해서 vibrate 라는 개념에 대해서 개발자 문서에서 찾아보았다.

kSystemSoundID_Vibrate 라는 변수를 찾았고 알아보자.

🙌 kSystemSoundID_Vibrate

iPhone 에서 AudioServicesPlayAlertSound(_:) 함수와 함께 사용하여 짧은 진동을 호출한다. iPod touch 에서는 아무 작업도 수행하지 않는다.

그렇다면 AudioServicesPlayAlertSound(_:) 에 대해서 알아보자.

🙌 AudioServicePlayAlertSound(_:)

Plays a system sound as an alert.

Parameters

inSystemSoundID

경고로 재생할 시스템 사운드 객체이다.

이 함수를 사용하기 전에 AudioServicesCreateSystemSoundID(_:_:) 함수를 호출해서 시스템 사운드를 얻어야 한다.

Discussion

특정 iOS 기기에 따라서 이 기능은 짧은 소리를 재생하고 vibration 을 유발할 수 있다. 이 함수를 호출하면 다음을 수행한다.

  • iPhone - 지정된 사운드를 재생한다. 사용자가 ring 에서 진동에 대한 설정을 구성한 경우 진동도 호출. 하지만 진동이 오디오 녹음을 방해하는 경우에는 장치가 진동하지 않는다.

alert 로 사용되지 않는 짧은 사운드를 재생하려면 AudioServicesPlaySystemSound(_:) 를 사용한다.

짧은 사운드를 재생하는 것이 우리 목표이므로 AudioServicesPlaySystemSound(_:) 에 대해서 알아보자.

🙌 AudioServicesPlaySystemSound(_:)

Plays a system sound object

Declaration

func AudioServicesPlaySystemSound(_ inSystemSoundID: SystemSoundID)

Parameters

inSystemSoundID

재생할 시스템 사운드이다. 이 함수를 사용하기 전에 AudioServicesCreateSystemSoundID(_:_:) 함수를 호출하여 시스템 사운드를 얻어야 한다.

Discussion

이 기능은 짧은 사운드(30초 이하) 를 재생한다. 이 기능은 비동기적으로 실행된다.

일부 iOS 기기에서(iPod touch 제외) kSystemSoundID_Vibrate 상수를 전달하여 진동을 호출할 수 있다.

👏 원리

  • kSystemSoundID_Vibrate 상수를 AudioServicesPlaySystemSound(_:) 에 전달해서 진동을 호출한다.

시작하기

👏 화면전환 시 Vibrate 기능 추가

  • MainViewController.swift
import AudioToolbox

// ...

    override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
        if motion == .motionShake {

            // ...

            // ✅ 두번 연속 motion 을 인식하면 조건문 실행
            if motionNumber == 2 {

                // ...

                // ✅ vibrate 기능 추가
                AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
            }
        }
    }

출처 :

Apple Developer Documentation

깃허브 :

 

GitHub - 28th-SOPT-iOS-CloneCoding/MiraClone-KimHyunGyu: 🧚 아요 미라클론코딩 김현규

🧚 아요 미라클론코딩 김현규. Contribute to 28th-SOPT-iOS-CloneCoding/MiraClone-KimHyunGyu development by creating an account on GitHub.

github.com

 

728x90
반응형
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
링크
Total
Today
Yesterday