Почему-то didReceiveRemoteNotification или ReceivedRemoteNotification никогда не срабатывает; когда я его реализовал некоторое время назад, это было прекрасно, по крайней мере, когда я тестировал его, когда приложение было в фоновом режиме. Теперь, спустя две недели, и мое приложение более зрелое, я возвращался к части уведомлений, чтобы узнать, что в какой-то конкретный момент события увольняются. Устройство получает всплывающее окно push-уведомления, и когда я нажимаю его, приложение открывается, но didFinishLaunchingWithOptions launchOptions равно нулю.didReceiveRemoteNotification или ReceivedRemoteNotification никогда не срабатывает
Что могло бы заставить это перестать работать?
- Push-уведомления включен
- фона Режимы работы (удаленные уведомления и фона выборки) позволило
в didFinishLaunchingWithOptions:
if application.respondsToSelector("registerUserNotificationSettings:") {
let setting = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil);
application.registerUserNotificationSettings(setting);
application.registerForRemoteNotifications();
}
было добавлено следующее:
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
deviceTokenStr = DeviceTokenToString(deviceToken)
print(deviceTokenStr)
}
и
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
print("Device token for push notifications: FAIL")
}
то два следующих FUNC:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
print("notification received")
}
и
func application(application: UIApplication, ReceivedRemoteNotification userInfo: [NSObject : AnyObject]) {
print("notification received")
}
didRegisterForRemoteNotificationsWithDeviceToken возвращает маркер для толчка, и в тренажере вызывает didFailToRegis terForRemoteNotificationsWithError, пока все работает нормально.
Когда приложение находится в фоновом режиме и инструктирует сервер отправлять push, он приходит на телефон и нажимает на него, откроет приложение.
, но ничего внутри didReceiveRemoteNotification или ReceivedRemoteNotification не срабатывает.
Я просмотрел множество сообщений stackoverflow, но ни одна из них, похоже, не имеет той же проблемы и/или решения, после того как вы пытаетесь использовать всевозможные комбинации в разных сообщениях, я не могу заставить ее вернуться к работе.
APN полезная нагрузка Основные только «АПС»:
{
"alert":"string message",
"sound":"default"
}
Было бы замечательно, если бы кто-то может дать мне руку, чтобы выяснить, почему она остановилась.
Заранее спасибо.
Edit: добавили содержание к функциям
Когда приложение работает, он будет показывать только 64 символов нажимных маркеров в журнале, никаких ошибок не показаны.
на консоли устройства протоколирования это показывает, что это на время толчок уведомление приходит и, когда приложение работает в фоновом режиме:
Jan 3 21:20:29 Marcs-iPhone SpringBoard[58] <Warning>: SBLockScreenNotificationListController: Attempting to remove a bulletin I don't have
ничего не происходит в лог консоли, когда приложение является активным приложением.
Edit 2: Log добавляемые APN Tester
2016-01-03 21:42:59 +0000: Connected to server gateway.sandbox.push.apple.com
2016-01-03 21:42:59 +0000: Set SSL connection
2016-01-03 21:42:59 +0000: Set peer domain name gateway.sandbox.push.apple.com
2016-01-03 21:42:59 +0000: Keychain Opened
2016-01-03 21:42:59 +0000: Certificate data for Apple Push Services: com.xxxxxxx.xxxxxxxx initialized successfully
2016-01-03 21:42:59 +0000: Sec Identity created
2016-01-03 21:42:59 +0000: Client certificate created
2016-01-03 21:42:59 +0000: Connected
2016-01-03 21:42:59 +0000: Token: <xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx>
2016-01-03 21:42:59 +0000: Written 92 bytes sending data to gateway.sandbox.push.apple.com:2195
2016-01-03 21:42:59 +0000: Disconnected from server gateway.sandbox.push.apple.com:2195
Сообщение прибывали по телефону при выполнении APN послал, хотя и ничего не показал в журнале консоли устройства, ни отладочный вывод
Можете ли вы продемонстрировать реализацию методов, которые, по вашему мнению, не работают? didRegisterForRemoteNotificationsWithDeviceToken и didFailToRegisterForRemoteNotificationsWithError не кажутся точными, поскольку у них отсутствуют параметры, а капитализация не соответствует декларации. – Joride
сейчас i'am только делает печать ("уведомление") полученый в didReceiveRemoteNotification и ReceivedRemoteNotification в didRegisterForRemoteNotificationsWithDeviceToken я должен следующее: 'пусть deviceTokenStr = DeviceTokenToString (deviceToken)' ' печать (deviceTokenStr)' где DeviceTokenToString является небольшая функция, которая удаляет < > и пробелы –
Пожалуйста, включите полную реализацию в свой вопрос. Кроме того, взгляните на консоль, а не на отладочную, но на одну из них. Это может привести к некоторым ошибкам, которые могут вам помочь. – Joride