У меня есть приложение, в котором я пытаюсь получить и обрабатывать SILENT push-уведомления.iOS 10 молчание push-уведомление не запускает фоновые приложения
Я регистрации для APN, следующим образом:
UNUserNotificationCenter.currentNotificationCenter().delegate = self
UNUserNotificationCenter.currentNotificationCenter().requestAuthorizationWithOptions([.Badge, .Sound, .Alert]) {(granted, error) in
if granted {
application.registerForRemoteNotifications()
}
}
Реализовано:
func userNotificationCenter(center: UNUserNotificationCenter, didReceiveNotificationResponse response: UNNotificationResponse, withCompletionHandler completionHandler:() -> Void) {
// Handle notification
}
func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void) {
// Handle notification
}
Приложение имеет UIBackgroundModes
fetch
и remote-notification
Содержание APN выглядит следующим образом:
{
"aps":{
"content-available":1,
"badge":0
},
"action":"shareDelete",
"shareId":633
}
Когда приложение находится на переднем плане, при получении уведомления запускается userNotificationCenter(centre:withCompletionHandler:willPresentNotification)
, но когда приложение находится в фойе, ничего не происходит.
Я вижу, что APN получен путем изменения номера значка, но ничего не запускается в приложении.
Что мне не хватает?
(также спросил на Apple, Дев форумах)
Я не знаю причины, по вопросу выше, но если вы пытаетесь справиться с SILENT уведомления вы могли бы использовать «didReceiveRemoteNotification» метод делегата и использовать «[[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground "для обработки. – Bharath
Это для iOS 10 - есть новые методы делегирования (правильно?) –
Нет, я имел в виду, что, поскольку вы хотите обрабатывать молчаливое уведомление, вы можете использовать существующее «didReceiveRemoteNotification» и обрабатывать его, вместо того, чтобы искать «willPresentNotification» для обрабатывайте его там. – Bharath