'How to show a local notification in the lock screen on iOS?

In my iOS app, I want to show a local notification that appears in the notification center and in the lock screen. It aims to be a notification for a music player.

So far, here is what I tried, running on iOS 15.3.1:

  • at app startup:
override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
{
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) { (granted, error) in
        if (granted)
        {
            let category = UNNotificationCategory(identifier: "streaming", actions: [], intentIdentifiers: [], options: [])
            UNUserNotificationCenter.current().setNotificationCategories([category])
            UNUserNotificationCenter.current().delegate = self
        }
        else
        {
            print("Notifications permission denied because: \(error?.localizedDescription).")
        }
    }
}

override func userNotificationCenter(
    _ center: UNUserNotificationCenter,
    willPresent notification: UNNotification,
    withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
    if #available(iOS 14, *)
    {
        completionHandler([.list])
    }
    else
    {
        completionHandler([.alert])
    }
}
    
  • when I want to show the local notification:
// content:
let content = UNMutableNotificationContent()
content.categoryIdentifier = "test_category"
content.title = "Title"
content.subtitle = "Subtitle"
content.body = "Notification body"
content.sound = UNNotificationSound.default

// trigger:
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
let uuidString = UUID().uuidString
let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

But for some reason, I only see the notification in the notification center, not in the lock screen...

So how can I see the notification in both the notification center and in the lock screen, as it is done for example on the Spotify app?

Thanks.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source