Suspended
(일시 중지) 상태로 전환하는 정책을 가지고 있음AVAudioPlayer
기반 알람은 앱 suspended
상태 진입 시 멈추는 치명적인 버그 발생
UNUserNotification
을 짧은 간격으로 여러 개(최대 64개) 예약하여, OS가 직접 알람을 연속적으로 울리게 하는 방식Suspended
상태에서도 100% 동작Suspended
상태가 되는 것을 원천 봉쇄하고, AVAudioPlayer
로 직접 알람을 제어하는 방식Notification Service Extension
방식
Extension
을 깨워 AVAudioPlayer
로 사운드 재생 시도Extension
은 원격(Remote) 푸시 알림에 의해서만 트리거되며, 로컬 알림으로는 불가능함이 확인됨Suspended
를 방지하다가 정시에 알람을 울리는 방식‘연속 로컬 알림' 방식: MVP 단계에서 신뢰성과 출시 가능성을 모두 확보할 수 있는 최적의 해결책
알림 지속 시간: 2초 간격 * 60번 발송 = 2분
사용자 설정별 수행 방법: iOS의 제약을 인정하고 옵션을 줄이거나 안내 문구를 제공하는 것으로 대체
사용자의 목표 | content.sound 설정 |
원리 | 최종 결과 (소리/무음 모드) |
---|---|---|---|
소리 O, 진동 O | 커스텀 사운드 파일 지정 | iOS 정책상 소리 재생 시 진동 동시 발생 | 소리+진동 / 진동만 (안내 필요) |
소리 O, 진동 X | (구현 불가) | 사용자 기기의 소리/진동모드, 백/포그라운드를 감지할 수 없음 | 지원하지 않음 (UI에서 선택 불가) |
예외 상황에 대비한 방어 코드로, 정책 A와 동일하게 처리 | |||
소리 X, 진동 O | '무음 사운드 파일' 트릭 사용 | 소리 없는 오디오 파일로 진동만 유발 | 진동만 / 진동만 |
소리 X, 진동 X | nil (설정 안 함) |
소리와 진동 없이 시각적 알림만 표시 | 소리, 진동 없이 배너만 |
Suspended
상태에서도 알람이 안정적으로 동작하여 앱의 핵심 신뢰도 확보