Youngminah/TIL

iOS Notification Local vs Remote

Youngminah opened this issue · 0 comments

Local

  • 서버와의 통신이 필요없는 알림의 경우
  • 처음시작할때 Appdelegate 또는 시작하자마자 또는 런치화면에서 구현.
  • 시간이나 장소에 따라 알리 생성가능

let userNotificationCenter = UNUserNotificationCenter.current()

func requestNotificationAuthorization() {
   let authOptions = UNAuthorizationOptions(arrayLiteral: .alert, .badge, .sound)
   userNotificationCenter.requestAuthorization(options: authOptions) { success, error in
      if success {
         self.sendNotification()
      }           
   }
}

func sendNotification() {
   let notificationContent = UNMutableNotificationContent()

   ///컨텐츠 영역
   notificationContent.title = "물 마실 시간이에요!"
   notificationContent.body = "하루 2리터 목표 달성을 위해 열심히 달려보아요"
   notificationContent.badge = 100
        
   // 언제 보낼 지 설정: 1. 간격, 2. 캘린더, 3. 위치
   let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 15, repeats: true) // 최소 60초 그게 아니면 repeat false
   //알림 요청
   let request = UNNotificationRequest(identifier: "\(Date())", //고유한 네이밍이 아니면 쌓이는게 아니라 알림이 교체됨.
                                       content: notificationContent,
                                       trigger: trigger)

   userNotificationCenter.add(request) { error in
      if let error = error {
         print("Notification Error: ", error)
      }
   }
}

Remote (Push)

  • 서버에서 알림을 전달
  • 인증서 필요 (개발자 계정필요)

  • 알림의 경우 foreground 상태에서는 알림 안오게 되어있음
  • 오게하려면 추가 설정 필요