본문 바로가기
개발/iOS

Swift / iOS ] UNUserNotificationCenter를 이용하여 타임 트리거 사용해보기

by lucidmaj7 2019. 11. 20.
728x90
반응형

오늘은  UNUserNotificationCenter를 이용해보는 예제를 작성해 보겠다.

 

그전에 UNUserNotificationCenter란 무엇인가?

 

Apple 개발자 문서에 따르면..

 

UNUserNotificationCenter는 앱이나 앱의 익스텐션들과 관련된 여러 알림들을 중앙에서 관리하는 객체라 한다.

이를 사용하기 위해서는 사용자에게 알람을 허락 받는 퍼미션을 물어봐야한다. 알림과 뱃지, 소리 등을 설정할 수 있고 스케줄링으로 푸시를 줄수도 있다 한다. 더 자세한 내용은 개발자 문서를 참고

 

https://developer.apple.com/documentation/usernotifications/unusernotificationcenter

 

UNUserNotificationCenter - UserNotifications | Apple Developer Documentation

Class UNUserNotificationCenter The central object for managing notification-related activities for your app or app extension. Declarationclass UNUserNotificationCenter : NSObject OverviewUse the shared UNUserNotificationCenter object to manage all notifica

developer.apple.com

아래  스토리보드 형식의 애플리케이션에서 적용하는 코드를 보자.

 

Swift 예제 (Storyboard)

import UIKit
import UserNotifications

class ViewController: UIViewController {

    //버튼을 클릭하면 .. 알람이 등록되고 5초후에
    @IBAction func pushButton(_ sender: Any) {
        print ("push button")
        let content = UNMutableNotificationContent()
        content.title = "Test Cron"
        content.subtitle = "알림입니다."
        content.body = "알람이야....!!"
        content.badge = 1
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats:false)

        let request = UNNotificationRequest(identifier: "timerdone", content: content, trigger: trigger)
        UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

      
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        //퍼미션을 요구한다.
         UNUserNotificationCenter.current().requestAuthorization(
            options: [.alert,.sound,.badge], completionHandler: {didAllow,Error in
            print(didAllow) //
         })


      
    }


}
  •  UNUserNotificationCenter.current().requestAuthorization을 이용해 퍼미션을 요구한다.
  • pushButton 메소드에서 버튼을 눌렀을 때  UNMutableNotificationContent를 이용하여 알람에 대한 내용을 설정한다.
  • UNTimeIntervalNotificationTrigger를 이용하여 알람에 대한 트리거를 설정한다. 여기서는 타임트리거를 생성한다.
  • UNNotificationRequest를 이용하여 트리거와, 알람 내용에 대한 요청을 생성한다. 이때 identifier를 설정한다.
  • 마지막으로 UNUserNotificationCenter.current().add를 이용하여 UserNofication에 등록한다.

이렇게 코드를 작성하고 실행해 보면 지정한 시간 후 푸시 알람을 볼 수 있다.(백그라운드 상태에서만 알람 푸시가 작동한다.)

 

알람이 왔다!

 

 

728x90
반응형

댓글