В симуляторе я могу получить точный результат, который я хочу: когда я вызываю уведомление и мой телефон симулятора заблокирован, уведомление направляется на часы ,Локальные уведомления, отправленные на фоновый рисунок, работают в симуляторе, но не на устройстве
Это использовалось для работы на устройстве (мой iPhone 6 на iOS 9.1 и Watch на watchOS 2.0). По какой-то причине он перестает работать, и я не знаю, как отладить проблему.
Итак, на устройстве я уверен, что приложение находится в фоновом режиме, перейдя на главный экран и заблокировав телефон и следя за тем, чтобы мои часы спали. Когда уведомление инициируется, ничего не происходит. Когда я открываю приложение, это значит, что уведомления, наконец, запускаются. И.Е. если я вызываю 3 уведомления, ни один из них не регистрируется, пока я не открою приложение на передний план. Это не так, как это работает в симуляторе (симулятор имеет правильное поведение, описанное выше).
Уведомление инициируется мной, меняя текстовый объект, который хранится в моей Firebase db. Это изменение вызывает функцию sendNotification. Опять же, это отлично работает в симуляторе и используется для работы на устройстве, но по какой-то причине больше не работает.
В приложение делегата у меня есть:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Alert, categories: nil))
// Setting up Local Notification
let assistAction = UIMutableUserNotificationAction()
assistAction.activationMode = UIUserNotificationActivationMode.Background
assistAction.identifier = categoryID
assistAction.title = "Assist"
assistAction.authenticationRequired = false
assistAction.destructive = false
// Category
let assistCategory = UIMutableUserNotificationCategory()
assistCategory.identifier = categoryID
assistCategory.setActions([assistAction], forContext: UIUserNotificationActionContext.Default)
// Only way to get this to work with parameter
let categories = NSSet(object: assistCategory)
// Settings
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: categories as? Set<UIUserNotificationCategory>)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
// UIApplication.sharedApplication().registerForRemoteNotifications()
return true
}
Тогда на мой взгляд, контроллер у меня есть:
func sendNotification(customerName: String, helpText: String) {
// Local Notification
let notification = UILocalNotification()
notification.alertBody = "\(customerName) \(helpText)"
notification.soundName = UILocalNotificationDefaultSoundName
notification.fireDate = NSDate()
notification.category = categoryID
UIApplication.sharedApplication().presentLocalNotificationNow(notification)
print("Sent notification");
}
Вы могли решить эту проблему? – rahul
Я сделал! Просто ответил на мой вопрос ниже. –