How to create Local Notifications in your iOS App

Local and Push Notifications are very similar, the only difference is their origin. While Push Notifications are sent to Apple who in turn send them to your device, a Local Notification is created like a mix between an alert view and a timer. To the end user they look the same.

Photo 06-01-2014 13 32 27

To create the we can use an instance of the UILocalNotification class, followed by scheduling the notification:

- (void)viewDidLoad
    [super viewDidLoad];
    // before we create any new ones, cancel all existing notifications
    [[UIApplication sharedApplication]cancelAllLocalNotifications];
    // create a local notification
    UILocalNotification *notification = [[UILocalNotification alloc]init];

    // customise and schedule it
    notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:30];
    notification.timeZone = [NSTimeZone defaultTimeZone];
    notification.repeatInterval = NSMinuteCalendarUnit;
    notification.soundName = UILocalNotificationDefaultSoundName;
    notification.alertAction = @"Let's do this";
    notification.alertBody = @"Here's a notification for you. This will happen every minute forever now.";
    [[UIApplication sharedApplication]scheduleLocalNotification:notification];

When we run our app it’s a good ice ago cancel all existing notifications that may be hanging around. Otherwise, you’d have 4x the amount of notifications when you run the app 4 times in a row. Next we create our notification and customise it. You can also set a badge number and define your own sound files.

The alertAction is the button or slider text when shown on the lock screen, and the alertBody the actual message. You can even specify an alertLaunchImage that will be shown when the user hits the action button (like a launch image).

All that remains is to schedule the notification. In our example it will come up once every minute, as specified in the repeatInterval. Choose any NSCalendar unit you like (daily, weekly, hourly, etc).

To bring up a notification right away you can do it like this:

[[UIApplication sharedApplication]presentLocalNotificationNow:notification];

Local notifications are fired even if the app is not running, or if it’s in the background. Users can choose to opt-out of receiving those, and they can choose how notifications from your app will appear (under Settings – Notifications – Your App).

Note that if your app is in the foreground notifications are not displayed (because that would be really annoying).

Leave a Reply