티스토리 뷰
내용
- 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)
}
}
}
출처 :
깃허브 :
'iOS > Clone Coding' 카테고리의 다른 글
iOS) Kakao QRcode Widget 클론코딩 - MVVM 적용 (0) | 2021.09.01 |
---|---|
iOS) Kakao QRcode Widget 클론코딩 - 화면캡처 block (0) | 2021.09.01 |
iOS) Kakao QRcode Widget 클론코딩 - shake motion event(2/2) - CMMotionManager (0) | 2021.08.29 |
iOS) Kakao QRcode Widget 클론코딩 - shake motion event(1/2) - UIResponder (0) | 2021.08.29 |
iOS) 클론코딩 스터디 - 미라클론 계획 및 내용 (0) | 2021.08.29 |
- MVVM
- Objective-C
- WWDC22
- watchOS
- APNS
- Swift
- SwiftUI
- OpenSourceLibrary
- configurable widget
- async/await
- UserDefaults
- Notification
- WWDC
- RxCocoa
- 2022 KAKAO TECH INTERNSHIP
- Algorithm
- urlsession
- MOYA
- Firebase
- 서버통신
- github
- Protocol
- CloneCoding
- IOS
- containerBackground
- WidgetKit
- YPImagePicker
- projectsetting
- Widget
- rxswift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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