5minho / DreamRecorder

mino & bran BoostCamp Project
6 stars 0 forks source link

알림(음악) 재생을 위한 AVFoundation Audio파트 공부 #34

Closed YoonJuHo closed 6 years ago

YoonJuHo commented 6 years ago

AVQueuePlayer Loop으로 작동하다가가 최종적으로 음악을 재생하게

YoonJuHo commented 6 years ago
  1. Background에 들어가도 Audio를 통해 Background에서도 작동하기

애플에서 Background에서도 돌아가게 지원하는 것 (멀티테스팅) 중에는 Audio, VoIP, Location, Bluetooth, BackgroundFetch등이 있는데 Audio를 시도함. 음악을 재생시키는데 소리없는 파일을 재생시키면 됨.

YoonJuHo commented 6 years ago
  1. Background상태 지속적으로 유지하기

2-1) iOS10에서는 AVPlayerLooper를 통해서 원하는 AVQueuePlayer와 반복될 사운드 Item을 통해 초기화하여 설정해주면 자동적으로 Looping된다. (물론 Looper를 참조하는 변수가 사라지면 안됨.) 이 후 AVPlayerLooper 프로퍼티 중 KVO를 지원하는 loopCount를 통해 적절하게 반복 후 알람을 울려주면 된다.

2-2) iOS9에서는 AVPlayerLooper를 지원하지 않으므로 NotificationCenter중 Notification.Name.AVPlayerItemDidPlayToEndTime를 등록해주고 해당 AVQueuePlayer의 Item을 Object로 넘겨준다. 이 후 Notification을 받는 메서드에서 item.seek(to: kCMTimeZero)를 통해 다시 처음부터 재생하도록 하여 Looping의 형태를 갖추도록 한다. 적절하게 반복 후 알람 Notification중 fireDate와 Date()를 참고하여 해당 알람을 울려주면 된다. * item.seek(to: KCMTimeZero)가 정상적으로 처음으로 돌아가 다시 재생이 되려면 AVQueuePlayer인스턴스가 가지고 있는 actionAtItemEnd 프로퍼티에 .none을 설정해줘야 함!!!!