알람 소리 재생 기능 구현하기

권승용(Eric)·2025년 1월 15일

TIL

목록 보기
35/38

구현할 기능

  • 진동과 소리로 알람 재생
  • 알람 멈춤

고려할 사항

  • 디바이스에서 소리를 재생하는 방법
  • 디바이스에서 진동을 재생하는 방법
  • 디바이스가 잠겨있는 상태에서 소리와 진동을 재생하는 방법
  • 디바이스가 매너 모드일 경우에 소리를 재생하는 방법

디바이스에서 소리를 재생하는 방법 리서치

  • 먼저 애플 공식문서에서 audio로 검색되는 프레임워크들 검색
  • MediaPlayer
    • 유저 미디어(애플뮤직)에서 무언가 찾아서 재생하는 방법
    • MusicKit의 일부이다
  • CoreAudio
    • 오디오 하드웨어와 상호작용하기 위한 프레임워크
    • 굉장히 로우 레벨 프레임워크같음.
  • AVFoundation
    • 시청각 에셋과 작업, 디바이스 카메라 조작, 오디오 처리, 시스템 오디오 상호작용 설정
    • 파일에서 미디어 에셋 읽어서 재생 가능한 듯
  • AVFAudio
    • 오디오 재생, 녹음 및 처리; 앱의 시스템 오디오 동작 구성하기
    • 소리 재생은 이 프레임워크가 적절해 보인다.
  • AVKit
    • 미디어 재생을 위한 유저 인터페이스 관련 프레임워크 (pip, 자막, 트랜스포트 컨트롤 등)
  • Audio Toolbox
    • 오디오 재생 및 녹음, 포맷 변환, 오디오 스트림 파싱, 오디오 세션 설정
    • 얘도 재생 및 녹음이 있다.
  • WWDC에서 audio로 영상 검색
    • 딱히 관련있어 보이는 건 없음
    • audio-haptic experience 디자인하는 영상 관심생김
  • 시스템 알람 재생하고 싶어 시스템 사운드 재생 방법 리서치
    • 이 방법으로 진행했지만, 원하는 벨소리는 시스템 사운드에 존재하지 않음
  • 따라서 커스텀 벨소리 파일을 담고, 해당 파일을 재생하는 방법 리서치
  • 파일 또는 버퍼에서 오디오 재생하는 AVAudioPlayer 좋아보임
    • 볼륨 조정, 시작 / 정지 기능 모두 있어서 good
    • 추가적인 조정 필요하면 AVAudioEngine 사용해야 하지만 거기까지는 필요 없음
  • 적당한 벨소리 물색
  • 딜라이트룸 다운받아서 살펴보기
    • notification에 설정된 소리로 알람 기능 구현하는 듯?
    • notification 기능이 켜져 있어야 제대로 동작하는 것 같음

푸시 알림을 통한 소리 재생 기능 구현

  • 푸시 알림 동작시 소리 재생 가능
  • 다만 배너가 사라지거나 사용자가 배너를 주시하여 디바이스가 사용자 시선을 감지해 화면을 계속 켜놓지 않는 이상 소리 재생은 5초정도만 가능
  • 30초 미만의 소리 파일 적용 가능한데, 이 시간만큼 전부 재생되지가 않음 -> 반복적인 푸시 알림 필요
  • interruption level -> 가장 높은 critical 설정을 통해 mute / 사용자 볼륨 bypass 가능
  • 그런데 이는 특별한 entitlement가 필요하고, 애플에 요청해야 함 -> 스택 오버플로우 참고
  • critical 설정으로도 소리 재생 시간이 늘어나는지는 확인 필요

영호 튜터님 의견

  • critical entitlement는 거의 발급받을 수 없다고 보면 된다.
  • 뭔가 다른 우회 방식이 있을 것 -> AVAudioSession은 음량 설정 가능
  • 보통은 리모트 노티피케이션 씀. 로컬 노티피케이션은 잘 안 쓴다.
profile
ios 개발자에용

0개의 댓글