Programer/iOS

[Swift] Local Notification 일주일 마다 알림 설정하기

아즈샤 2015. 10. 14. 12:17
반응형

Local Notification 를 이용하여 단순히 Push 서버 없이 특정 시간을 일주일 마다 반복 알림을 설정하는 방법입니다.

    func setLocalNoti(date:NSDate, id:Int) {

        print(notiFlagArray[id])

        deleteLocalNoti("\(id)")


        let localNotification = UILocalNotification()

        localNotification.alertBody = "알림!"

        localNotification.timeZone = NSTimeZone.systemTimeZone()

        localNotification.soundName = UILocalNotificationDefaultSoundName

        localNotification.userInfo = ["UUID":"\(id)"]

        print(date)

        localNotification.fireDate = date

        localNotification.repeatInterval = .NSWeekCalendarUnit

        UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

        print(UIApplication.sharedApplication().scheduledLocalNotifications)

    }

    

    func deleteLocalNoti(UUID:String) {

        let app:UIApplication = UIApplication.sharedApplication()

        for oneEvent in app.scheduledLocalNotifications! {

            let notification = oneEvent as UILocalNotification

            let userInfoCurrent = notification.userInfo! as! [String:AnyObject]

            let uid = userInfoCurrent["UUID"]! as! String

            if uid == UUID {

                //Cancelling local notification

                app.cancelLocalNotification(notification)

                break;

            }

        }

    }


첫번째 setLocalNoti 함수는 설정할 날짜와 id를 매개변수로 받아와서 설정을 해줍니다.

(위 소스엔 없지만 저같은 경우, DatePicker의 값을 가져오도록 했습니다.)

localNotification.repeatInterval 부분이 알림을 반복해서 알려주는데요 .NSWeekCalendarUnit 를 설정해주면 일주일 단위로 반복해서 나타납니다. (해당 값에서 최신 버전에서 warning이 나오고 있는데, 확인중입니다.)


두번째 deleteLocalNoti함수는 만약 같은 id값을 가진 noti가 있다면 삭제를 해주는 함수 입니다.

localNotification의 경우 한번 설정을 하면 변경할 수 없기 때문에 예전의 Notification를 삭제 하는 것입니다.


이 두 함수를 사용하며 특정 요일 마다 알림 기능을 추가할 수 있습니다. 




반응형