Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 앱 꺼졌을 때 푸시 데이터 저장
- swift 문자
- swift autolayout
- 스위프트 UserDefaults
- 플러터 뷰 컨트롤러
- Flutter UIKitView MethodChannel
- Flutter NativeView
- 앱 백그라운드 푸시 데이터 저장
- flutter 회전
- NotificationService Extension
- flutter rotate
- 스위프트 웹뷰
- FlutterView MethodChannel
- 스위프트 카메라
- 안드로이드 에러
- 스위프트
- 스위프트 테이블 뷰 셀
- 스위프트 푸시
- 안드로이드 바로가기
- Swift flutterview
- Swift flutterviewcontroller
- 안드로이드 앨범
- swift sms
- silent push
- 푸시 데이터 저장
- native flutter view
- 노티피케이션 익스텐션
- 스위프트 앨범
- 안드로이드 FCM
- 안드로이드 숏컷
Archives
- Today
- Total
Things take time
[SWIFT] 시스템 알람(System Alarm) 사운드 가져오기 및 재생 본문
[시스템 사운드]
말 그대로 디바이스 내에 저장되어 있는 음악 파일들이다.
경로는 /System/Library/Audio/UISounds/ 하위에 있는 파일 들인데, 이 파일들을 불러와 테이블 뷰에 뿌리고
재생까지 하는 방법이다.
[코드]
import UIKit import AudioToolbox class SoundViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var tvSoundList: UITableView! private var soundList: [String] = [] private let soundDirectory = "/System/Library/Audio/UISounds/New" override func viewDidLoad() { super.viewDidLoad() tvSoundList.delegate = self tvSoundList.dataSource = self soundList = FileManager.default.enumerator(atPath: soundDirectory)!.map { String(describing: $0) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return soundList.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = UITableViewCell() cell.textLabel?.text = "\(soundList[indexPath.row])" return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let soundFileName = soundList[indexPath.row] let fullyQualifiedName = soundDirectory + "/" + soundFileName let url = URL(fileURLWithPath: fullyQualifiedName) var soundId: SystemSoundID = 0 AudioServicesCreateSystemSoundID(url as CFURL, &soundId) AudioServicesPlaySystemSoundWithCompletion(soundId, { print("AudioServicesPlaySystemSoundWithCompletion") AudioServicesDisposeSystemSoundID(soundId) }) //AudioServicesPlaySystemSound(soundId) } }
soundList에 FileManager를 통해 해당 디렉토리에 등록된 애들을 불러와 넣는다는 것 (New/ 까지 한 이유는 그 상위에 하면, 음악파일 뿐 아니라 New같은 일반 파일 디렉토리도 출력되서)
그리고 파일 재생할때는 AudioServicesPlaySystemSound(SoundID)으로 재생할 수 있는데.. 이 때, 위처럼 soundId값을 얻을 수도 있지만 상수값으로 이미 제공되는 것들이 있어 1020, 1021 과 같은 값을 넣어도 음악이 재생된다.
그리고 AudioServicesDisposeSystemSoundID를 통해 초기화 해주는 것이 좋다고 하니 꼭 이대로 하자.
기본적인 테이블 뷰 하나만 놓고 시작했다.
[결과]
'iOS (기능)' 카테고리의 다른 글
[SWIFT] iOS10에 추가된 UserNotifications을 사용하자 (푸시, APNS) (0) | 2017.12.06 |
---|---|
[SWIFT] APNS, 푸시를 보내보자. - Node.js (0) | 2017.11.29 |
[SWIFT] Toast Message 만들기 (0) | 2017.11.22 |
[SWIFT] UITAableViewCell의 RowHeight, 높이를 유동적(Dynamic)으로 조절하기 (0) | 2017.11.13 |
[SWIFT] UITableView의 separator, 구분선 왼쪽이 안나올 때 (0) | 2017.11.13 |