Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Local Notifications in iOS Development

1. Introduction to Local Notifications

Local notifications are a way to notify users about important events even when your app is not running in the foreground. Unlike push notifications, local notifications are scheduled and triggered by the app itself.

2. Setting Up Your Project

Before you can start using local notifications, you need to set up your iOS project to request permission from the user and handle notifications.

Step 1: Open your Xcode project and navigate to Info.plist. Add a new key called Privacy - Notifications Usage Description and provide a description for why you need notifications.

3. Requesting Notification Permissions

In your app delegate, you need to request permission to show notifications.

Example Code:

import UIKit
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
            if granted {
                print("Permission granted")
            } else {
                print("Permission denied")
            }
        }
        return true
    }
}
                

4. Scheduling a Local Notification

Once you have permission, you can schedule a local notification.

Example Code:

import UserNotifications

func scheduleLocalNotification() {
    let content = UNMutableNotificationContent()
    content.title = "Hello!"
    content.body = "This is a local notification."
    content.sound = UNNotificationSound.default

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
    
    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
    
    UNUserNotificationCenter.current().add(request) { error in
        if let error = error {
            print("Error scheduling notification: \(error)")
        } else {
            print("Notification scheduled!")
        }
    }
}
                

5. Handling Notification Actions

To handle actions when a user interacts with your notification, implement the UNUserNotificationCenterDelegate methods.

Example Code:

import UserNotifications

class NotificationHandler: NSObject, UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        // Handle the notification action
        let userInfo = response.notification.request.content.userInfo
        print("Notification received with userInfo: \(userInfo)")
        completionHandler()
    }
    
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        // Handle the notification while the app is in the foreground
        completionHandler([.alert, .sound])
    }
}
                

6. Conclusion

Local notifications are a powerful way to engage users by providing timely and relevant information. By following this tutorial, you should now be able to set up, schedule, and handle local notifications in your iOS applications.