Christian
Christian

Reputation: 22343

Local notification while app not running

Is it possible to show some kind of a local notification from an app, even if the app isn't running(also not in background)?

For example a daily reminder or something like that. I know that it is possible with push-notifications, but it doesn't fit for my app.

Upvotes: 8

Views: 8533

Answers (3)

io_user_io
io_user_io

Reputation: 1

Most of the solutions outlined above have all been deprecated. Use this UNUserNotification APIs instead

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
       registerForLocalNotification()
       return true
   }

func registerForLocalNotification() {
       UNUserNotificationCenter.current()
           .requestAuthorization(options: [.alert, .sound, .badge]) { [weak self] granted, _ in
               print("Permission: \(granted)")
           }
   }

Upvotes: 0

Berkay92
Berkay92

Reputation: 588

In AppDelegate, use this function instead

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
    application.registerUserNotificationSettings(settings)
    return true;
}

Upvotes: 0

Emil
Emil

Reputation: 7256

You can easily schedule local notifications, and they will be presented at the scheduled date and time regardless of the app's state.

First you need to get permission from the user to present notifications, like this:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound|UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))
    return true
}

Then you create the notification like this:

var localNotification:UILocalNotification = UILocalNotification()
localNotification.alertAction = "This is"
localNotification.alertBody = "A notification"
localNotification.fireDate = NSDate(timeIntervalSinceNow: 15)
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

Have a look at the Local and Remote Notification Programming Guide.

Upvotes: 19

Related Questions