2015-09-30 5 views
2

Это может показаться глупым вопросом, но это мой первый раз с использованием UILocalNotification, и я не могу заставить его работать для быстрого теста. Он просто ничего не делает.UILocalNotification ничего не делает

1. Я создал 2 переменные в AppDelegate

let today = NSDate() 
let notification: UILocalNotification = UILocalNotification() 

2. Затем в функции applicationDidEnterBackground, я следующий

notification.fireDate = today.dateByAddingTimeInterval(10) 
    notification.alertTitle = "My App Test" 
    notification.alertBody = "Testing Notification \n :)" 
    UIApplication.sharedApplication().presentLocalNotificationNow(notification) 
    UIApplication.sharedApplication().scheduleLocalNotification(notification) 

3. Также добавлены это для приложенияDidBecomeActive function

UIApplication.sharedApplication().cancelAllLocalNotifications() 
+0

Вы планирования уведомления 10 секунд после того, как вы создаете 'today' переменной. Вы фактически помещаете приложение в фоновом режиме в течение 10 секунд после его запуска? Вы добавили весь необходимый код для включения и ответа на уведомления? Принимали ли вы разрешение разрешать уведомления для своего приложения? – rmaddy

+0

Да, как только я запустил приложение, я сразу же положил его на задний план, чтобы убедиться, что я жду 10 секунд. Я даже видел, что мои записи в журнале делали звонки. В ответ на ваш второй вопрос мне показалось странным, что в моем приложении никогда не просили разрешения разрешать уведомления. Но об этом еще не думал. Как я могу заставить его спросить? – Lavvo

+1

Вы должны прочитать [Руководство по программированию локального и удаленного уведомлений] (https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html#//apple_ref/doc/uid/ TP40008194). – rmaddy

ответ

4

После прочтения документации я понял, что пропустил важный первый шаг, который должен сначала зарегистрировать мое приложение для уведомлений пользователей. Документ Apple был написан на OBJ-C, но я смог разобраться в нем, чтобы быстро преобразовать его. Это то, что я сделал:

1. Я добавил это к моей функции AppDelegate didFinishLaunchingWithOptions и теперь он работает

var types: UIUserNotificationType = UIUserNotificationType() 
types.insert(UIUserNotificationType.Alert) 
types.insert(UIUserNotificationType.Badge) 

let settings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil) 

UIApplication.sharedApplication().registerUserNotificationSettings(settings) 
+0

Иисус Христос, я не мог заставить его работать, и никто не упоминал об этом нигде ... Спасибо! – Atomix

+1

Согласен, все примеры, которые я видел, никогда не упоминают этот первый шаг. Но рад, что я смог все это понять и помогать всем, кому это нужно. – Lavvo

Смежные вопросы