codestates / medisharp-client

🗓 촬영 한 번으로 약 정보를 얻고, 해당 약의 복용 일정도 관리할 수 있는 모바일 서비스 '약올림'.💊 건강도, 편리함도 한 단계 올려보세요.
2 stars 0 forks source link

[Client]Feature/push noti 설정 #110

Closed hyunju-song closed 3 years ago

hyunju-song commented 3 years ago
  1. 우선 저희가 구현하려는 푸쉬는, 흔히 아는 (특히 커머스에서 사용) 마케팅용 푸시가 아닌, 각자의 디바이스에서만 작동하는 푸쉬라서 우려했던 것과는 달리 별도 서버 및 DB 구성이 필요없었습니다.

  2. "Notifications.scheduleNotificationAsync" 해당 메소드로 예약된 푸쉬를 설정하였습니다.

    let trigger = new Date(curr);
        trigger.setHours(Number(this.state.selectedHour));
        trigger.setMinutes(Number(this.state.selectedMinute));
        trigger.setSeconds(0);

    이렇게 예약 날짜 및 시간을 설정하고, 반복문을 통해 주기적으로 푸쉬를 지정해주었습니다. 또한 푸쉬 설정하는 메소드 전체가 하나의 id로 콘솔해보니 문자열타입이었습니다. 이를 schedules_date에 push 칼람을 추가해 주어서 저장했습니다.

  3. 따라서 일정을 불러올때마다 push도 불러오도록했습니다. 여기서 변수명의 차이를 말씀드리면

    push : 특정 날짜/ 일정의 push id 한개,
    pushArr: 특정 알람에 지정된 모든 push array
  4. 수정 시에는 DB에서 불러온 push의 id 값들을 불러서 다 삭제해주고, 새로운 일자로 재등록했습니다.

  5. 삭제의 경우에는 일정 전체 삭제시에는 pushArr 활용 / 특정 날짜만 삭제시에는 push를 활용했습니다.

우선 로컬에서 개별적으로 테스트 시에는 잘되는 것으로 확인되었으나 분명 서버 배포 및 전체적인 서비스 이용 시에 약간의 버그 발생 가능성이 있어서 현정님과 제가 한번 점검하고 fix branch로 pr 하겠습니다.

push 내에 버튼 추가가 가능한지 모르겠습니다. 버튼이 추가 가능하면 해당 버튼에 patch check API를 연동할수잇을듯 합니다.(지금은 없습니다)