예제 이미지 - "Local and Push Notification Programming Guide" 문서에서 발췌
Local Notification 이 무엇인가 ?
Local Notification 이전에, Push Notification 이라는 기능이 있었습니다.
개발사의 서버로부터 Apple Server 로 Notification을 발송하면, Apple Server 에서 iPhone 으로 Notification 을 "Push" 해주는 기능입니다.
Push Notification이 개발사마다 서버를 갖추어야 하고, 이래저래 세팅할것도 많습니다.
정말 필요한 경우가 아니라면 ( 예 : 카카오톡, 마이피플 ) Push Notification을 지원하는 일은 쉬운일이 아닙니다.
서버비용도 발생하고요,
그에 대안(!?) 으로 Local Notification 이라는 기능을 iOS 4.0 부터 지원하기 시작했습니다.
iPhone 내부에서, Notification 을 Scheduling 해주면, Apple Push Server의 도움 없이, Notification Alert을 발생시킬수가 있습니다.
Alram App 같은 것을 만들때 유용하게 사용할 수 있을것 같습니다 ^^
Local Notification이 없던 시절에는 반쪽짜리 Alarm App ( 항상 앱을 켜두어야 하는 ) 밖에 개발할 수 없었지요.
Local Notification Scheduling 하기.
1. UILocalNotification Object를 생성합니다.
2. fireDate설정
3. 필요하다면 아래의 Property 를 세팅해줍니다.
// alerts @property(nonatomic,copy) NSString *alertBody; // defaults to nil. pass a string or localized string key to show an alert @property(nonatomic) BOOL hasAction; // defaults to YES. pass NO to hide launching button/slider @property(nonatomic,copy) NSString *alertAction; // used in UIAlert button or 'slide to unlock...' slider in place of unlock @property(nonatomic,copy) NSString *alertLaunchImage; // used as the launch image (UILaunchImageFile) when launch button is tapped // sound @property(nonatomic,copy) NSString *soundName; // name of resource in app's bundle to play or UILocalNotificationDefaultSoundName // badge @property(nonatomic) NSInteger applicationIconBadgeNumber; // 0 means no change. defaults to 0
4. UIApplication 의 Local Notifiactoin Method들을 통해 scheduling을 합니다.
@interface UIApplication (UILocalNotifications) - (void)presentLocalNotificationNow:(UILocalNotification *)notification __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); - (void)scheduleLocalNotification:(UILocalNotification *)notification __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); // copies notification - (void)cancelLocalNotification:(UILocalNotification *)notification __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); - (void)cancelAllLocalNotifications __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); @property(nonatomic,copy) NSArray *scheduledLocalNotifications __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); // setter added in iOS 4.2 @end
Sample Code
- (IBAction) pressPushNow:(id)sender { UILocalNotification *localNotif = [[UILocalNotification alloc] init]; localNotif.fireDate = [[NSDate date] addTimeInterval:10]; localNotif.timeZone = [NSTimeZone defaultTimeZone]; localNotif.alertBody = @"AlertBody"; localNotif.alertAction = @"AlertAction"; localNotif.soundName = UILocalNotificationDefaultSoundName; localNotif.applicationIconBadgeNumber = 1; [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; [localNotif release]; }
Sample Screen Shot
자~~알 나옵니다 :)