1 year ago

#278743

test-img

matteoh

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.

ios

swift

uilocalnotification

0 Answers

Your Answer

Accepted video resources