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를 삭제 하는 것입니다.
이 두 함수를 사용하며 특정 요일 마다 알림 기능을 추가할 수 있습니다.
'Programer > iOS' 카테고리의 다른 글
[Swift] tableViewContorler에서 navigation를 사용시 배경화면 문제 (1) | 2015.11.06 |
---|---|
[Xcode] TableView 에서 멈춤 현상이 일어나는 경우 (0) | 2015.10.30 |
[Swift] 간편하게 DB접속하기 (SQLite) (0) | 2015.09.30 |
[Swift] 오늘 날짜 구하기 (NSDate) (0) | 2015.09.30 |
[Swift] 상태바를 숨기고 싶을 때 (Hide Status Bar) (0) | 2015.09.30 |