5minho / DreamRecorder

mino & bran BoostCamp Project
6 stars 0 forks source link

상황에 따른 알람 표현 (foreground | background | suspended, snooze | notSnooze) #37

Closed YoonJuHo closed 6 years ago

YoonJuHo commented 6 years ago

foreground의 경우에는 AVAudioPlayer를 통해서 음원을 재생시켜준다. (화면을 전환하는 것은 나중에) background의 경우에는 AVQueuePlayer를 통해서 알람까지의 시간을 추적하여 울리도록 한다. suspended상태를 고려하여 resign시 미리 Notification을 60개정도 Duplicate한다. -> 이때 다시 앱을 활성화 했을 땐(AuidoPlayer를 통해서 알람가능해 질 땐) 다시 Notification들을 삭제해준다.

사용자가 Lock화면일 경우 30초의 알람음을 보장하지만 다른 작업일 경우 5초간 울린다. <- 화면을 보고 있다고 가정 snooze버튼을 누르면 9분후의 알람이 다시 울리도록 추가한다.

YoonJuHo commented 6 years ago

최종:

  1. foreground의 경우는 willPresent를 통해서 알람을 인지한다.

2-1. background 상태의 경우 사용자가 Notification 또는 NotificationAction에 반응하면 AppDelegate의 didReceive 메서드를 통해서 처리한다.

2-2. background상태에서 앱 아이콘을 통해 진입시 didEnterForeground메서드 안에서 SoundManager의 isPlaying상태를 확인후 현재 알람이 울리는 중에 접속인지 알람이 없는데 들어온 것인지 판단한다. 또한 AlarmScheduler또한 앱에 진입시 바뀔 UI(isActive)가 있는 지 확인한다.

  1. 앱이 terminate(사용자 강제 종료)시에는 willTerminate메서드를 통해서 경고 노티피케이션을 하나 추가하고 이후 계속울릴 수 있도록 같은 알람이지만 1분단위로 여러개를 추가한다.