[TIL] 푸시 알림 Push Notification (22.10.11)

로컬 VS. 푸시 알림

  • 권한 체크 중요함! 권한 체크 문구는 바꿀 수 없음
  • 로컬 알림
    • 앱 내에서 알림. 알림센터에서 알림이 옴
    • 비슷한 시간에 항상 같은 문자열의 내용이 나타남
  • 푸시 알림
    • 서버에서 알림.
    • 광고, 채팅 알림. 언제 어떤 내용으로 알림이 올지 모름

푸시 알림

  • 항상 권한 체크 중요!!!
  • APNS - Apple Push Notification System
    • 앱 실행 → 애플 서버에 요청(내가 사용할 푸시에 대한 식별자 제공해줘! 이 기기 등록해줘) → 서버: 푸시받을 수 있게 식별자를 줄게(식별자, 토큰, 기기 주민번호) → 카톡 서버에 요청 전달(발급받은 주민번호를 기억함) → 푸시를 잘 받게 될 수 있는 상황이 완료됨! → 애플 서버에서 푸시를 보냄
    • 푸시는 카톡이 애플 서버에 부탁해서 보내게 됨.
    • 애플이 푸시를 관리함!
  • 서버가 없으므로 사용할 수 있는 것이 파이어베이스!
  • 푸시 구현 시 체크리스트:
    • 애플 개발자 계정이 있어야 함
    • 실제 기기가 있어야 함 - 시뮬레이터 테스트 불가(Xcode 11.4부터 수신 지원하긴 함! 그러나 번거로움)
    • Apple 푸시 알림 인증키 필요 푸시 인증 키 등록
      • 인증키 하나로 여러 앱 푸시 사용 가능
      • (→ 인증서 관리 폴더 만들면 좋음)
      • p12: 인증서 → 인증서 두 개로 나뉨 (개발용, 배포용), 1년마다 갱신이었음
      • p8로 바뀜: 인증키 → 하나만 받으면 둘 다 가능, 기능 영구
  • 파이어베이스 - 클라우드 메시징, 프로젝트 설정

https://firebase.google.com/docs/cloud-messaging/ios/client?hl=ko&authuser=0

  • FCM 토큰 추가하고 테스트 성공!
  • 푸시마다 설정, 화면마다 설정도 가능
    • 푸시 클릭하면 특정 화면전환까지 이루어지는 경우 등 설정할 수 있는 것 다양함

 

UNNotificationInterruptionLevel

  • iOS 15부터 알림 수준 다르게 설정할 수 있음. → 긴급, 방해금지 모드에서도 푸시 온다든지.. 등

 

토큰 재설정 문제

  • 회원 탈퇴해도 토큰 삭제 안하면.. 채팅 섞여들어갈 수도
  • 카카오톡에서 차단을 했는데 푸시 알림을 삭제하지 않은 경우.. 푸시를 누른다면 어디로 가야할까?
  • 푸시 모두 없애버려서 → 경우의 수를 줄일 수 있다
// SceneDelegate.swift
func sceneDidBecomeActive(_ scene: UIScene) { 
    // Called when the scene has moved from an inactive state to an active state. 
    // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. 
    UIApplication.shared.applicationIconBadgeNumber = 0 
    UNUserNotificationCenter.current().removeAllDeliveredNotifications() // stack으로 쌓여있는 알림 다 없애버림 
}

 

실제 앱 용량확인법:

앱스토어 커넥트 들어가서 확인하기

디버깅 모드에서 텍스트하는 용량이랑 실제 출시되는 용량은 다름!

 

 

 


새싹 교육 과정에서 배운 내용을 정리합니다.