#swift #apple-push-notifications
#swift #apple-push-уведомления
Вопрос:
Я тестирую уведомления в XCode 12.2. Очень легко протестировать уведомления в стиле оповещений. Вы просто перетаскиваете их в свое приложение в симуляторе, и полезная нагрузка отображается в:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler завершениеHandler: @escaping (UIBackgroundFetchResult) -> Void) { notificationsDispatcher.process(userInfo) завершениеHandler(.newData) }
Теперь, при тестировании тихих уведомлений, я могу запустить автоматическое уведомление после установки «Фоновая выборка» в фоновых режимах. Затем я попадаю в:
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
debugPrint("hello silence ")
}
Это нормально, если я хочу, чтобы приложение выполняло что-то, не связанное с данными в полезной нагрузке. Как мне увидеть фактические данные полезной нагрузки apns?
Я пытаюсь получить доступ к этому примеру полезной нагрузки, который я использую:
{
"aps": {
"category": "tasks",
"content-available": 1,
"thread-id": "tasks"
},
"resource": {
"resourceType": null,
"additionalProperties": {
"taskIds": [
"xxx"
],
"classification": "xxx",
"status": "xxx"
}
}
}
Ответ №1:
Имитация тихих push-уведомлений в настоящее время не работает, если content-available
установлен флаг, поскольку он вызывает неправильный метод делегирования.
Если вы попытаетесь использовать реальное устройство и отправить реальное push-уведомление, оно должно вызвать application(:didReceiveRemoteNotification:fetchCompletionHandler:)
делегата, и вы сможете получить доступ к полезной нагрузке. Об этом также есть несколько сообщений на форуме, например https://developer.apple.com/forums/thread/652649 .