Closed YoonJuHo closed 6 years ago
최종:
2-1. background 상태의 경우 사용자가 Notification 또는 NotificationAction에 반응하면 AppDelegate의 didReceive 메서드를 통해서 처리한다.
2-2. background상태에서 앱 아이콘을 통해 진입시 didEnterForeground메서드 안에서 SoundManager의 isPlaying상태를 확인후 현재 알람이 울리는 중에 접속인지 알람이 없는데 들어온 것인지 판단한다. 또한 AlarmScheduler또한 앱에 진입시 바뀔 UI(isActive)가 있는 지 확인한다.
foreground의 경우에는 AVAudioPlayer를 통해서 음원을 재생시켜준다. (화면을 전환하는 것은 나중에) background의 경우에는 AVQueuePlayer를 통해서 알람까지의 시간을 추적하여 울리도록 한다. suspended상태를 고려하여 resign시 미리 Notification을 60개정도 Duplicate한다. -> 이때 다시 앱을 활성화 했을 땐(AuidoPlayer를 통해서 알람가능해 질 땐) 다시 Notification들을 삭제해준다.
사용자가 Lock화면일 경우 30초의 알람음을 보장하지만 다른 작업일 경우 5초간 울린다. <- 화면을 보고 있다고 가정 snooze버튼을 누르면 9분후의 알람이 다시 울리도록 추가한다.