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 상태에서도 알람이 안정적으로 동작하여 앱의 핵심 신뢰도 확보