2015-01-01 6 views
4

Возможно ли показать какое-либо локальное уведомление из приложения, даже если приложение не работает (также не в фоновом режиме)?Локальное уведомление при запуске приложения

Например, ежедневное напоминание или что-то в этом роде. Я знаю, что это возможно с push-уведомлениями, но это не подходит для моего приложения.

+0

уведомления Push-требуют оплаты работы. Я думаю, что лучшие варианты - фоновая стоковая нить –

+0

Ну, но если пользователь останавливает приложение, фоновый поток также будет убит правильно? – Christian

+1

@EnriqueQuero Что вы подразумеваете под платежами? – Emil

ответ

14

Вы можете легко запланировать локальные уведомления, и они будут представлены в запланированные даты и время независимо от состояния приложения.

Прежде всего, необходимо получить разрешение от пользователя, чтобы представить уведомления, например:

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

Затем создается уведомление, как это:

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

Посмотрите на Local and Remote Notification Programming Guide.

+0

Это потрясающий ответ и разрешил мою проблему. Работает как шарм. – Christian

+0

[UILocalNotification] (https://developer.apple.com/documentation/uikit/uilocalnotification) устарела. Взгляните на [этот пример Swift 3] (https://stackoverflow.com/a/45247943/4754881) для локальных уведомлений с помощью [UNUserNotificationCenter] (https://developer.apple.com/documentation/usernotifications/unusernotificationcenter). –

0

В AppDelegate, используйте эту функцию вместо

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