simoniful/iOS_FastCampus_Tutorial

물 마시기 알람 & 재난 문자 푸시 알림 회고

Opened this issue · 0 comments

고민

  1. 거추장 스러운 동기화 과정
  2. Local 알람 및 뱃지, 사운드 등 부가적인 구성, 이 후 동작에 대한 처리
  3. 추가적인 알림 활용 방법 - 캘린더, 타임 인터벌, 지역
  4. 리모트에서 고려할 사항

회고

  1. 하나하나 다 해주어야하는 동기화
    물 마시기 알람을 구성하면서 예전 게시판을 구성하는 것과 유사함. 일종의 CRUD 활용
    결국 데이터를 동기화하는데 있어서 인터렉션이 있을 때 마다 UserDefaults 동기화를 해주어야하는 문제 발생
    Rx를 통해서 바인딩 한다면 해당 불편 사항을 어느정도 해결하고 적용하는게 수월하지 않을까 생각하여 리팩토링 진행 중

  2. 알람 관련해서 다음 동작 연결, 뱃지 정리
    항상 푸시 알람이 오고나서 그냥 알람이 오는게 아니라 그 다음에 행동에 대한 지시를 구성하는게 더 중요하다는 것을 느낌
    푸시를 탭했을 때 원하는 부분으로 뷰를 이동하거나 바꿀 수 있도록 keyValue의 flag도 실어서 보내면서 컨트롤 할 수 있어야 하고
    비활성화 상태에서 앱을 다시 활성화 했을 때 뱃지와 카운트 정리가 필요

  3. 로컬 구성 관련 정리

  • Content
    • content는 사용자에게 어떤 내용을 보여줄 지에 대한 정보를 담고 있다. title, body, badge number, userInfo, attachments 등이 있다. userInfo는 원하는 정보를 모두 담을 수 있는 Dictionary 구조며, 알림을 사용자가 눌렀을 때 userInfo에 들어있는 정보를 접근하여 활용가능하다.
  • Trigger
    • trigger에는 3가지 타입이 있다. time, calendar, location. 이름과 같이 일정 시간이 지난 후에 작동되길 원한다면 time, 특정한 날짜에 작동하기 원한다면 calendar, 특정 위치에 진입할 경우 혹은 나갈 경우에 작동하기 원한다면 location을 활용하여 알람 발생 가능
  • Request
    • request는 content와 trigger를 가지고 로컬 푸쉬를 등록하기 위한 요청. identifier를 지정하여 나중에 해당 알림을 취소하거나 핸들링할 때 사용할 수 있도록 구성
  1. 리모트 관련 처리해야할 사항 정리
  • 인증서 발급
    • Firebase를 사용하던, 아니면 APNs를 사용하여 서버 푸시를 구현하게되면 우선적으로 애플 개발자 사이트로 가서 인증서 관련 작업을 통해서 push서비스와 함께 Identifiers를 등록하고 certificates 발급 후에 진행 가능
    • 사용자 기기에서 실행되는 앱의 인스턴스에서 device token을 받고, 이 토큰을 사용자 계정과 관련짓는 코드를 작성하자. 앱을 APNs에 등록해야 한다.
  • 토큰 등록, 인증 허용 설정
    • 해당 서비스 이용에 대한 app의 확장 설정을 마치고 토큰을 등록하여 구성하고, 푸시 사용에 대한 허용 여부를 사용자가 설정하게 끔 plist와 해당 alert을 구성하여 인증 후에 push 서비스를 진행할 수 있도록 설정
    • 알림을 사용자에게 언제 보낼지 결정하고, 알림 payload를 생성하는 코드를 작성한다. Remote notification을 생성한다.
    • Payload를 포함하는 POST request를 생성하고, 이를 HTTP/2 연결로 보낼 코드를 작성한다. Notification request를 APNs로 보낸다.
    • Token 기반의 인증을 위해 토큰을 일시적으로 재생성한다. Token 기반의 연결을 APNs에 설정한다.

참고

👉🏻 로컬 알람 관련
👉🏻 리모트 알람 관련
👉🏻 UserNotification 구성 관련
👉🏻 Firebase Cloud Messaging