Я работаю над приложением для iOS на основе push-уведомлений с устройства на устройство. Мои уведомления работают нормально, когда приложение находится на переднем плане и в фоновом режиме. Но это не работает в соответствии с требованием, когда приложение находится в отключенном состоянии. У меня есть пользовательское уведомление, которое имеет две кнопки (Принять и Отклонить). Когда приложение находится в отключенном состоянии, я могу получить уведомление, но не могу выполнить действие с кнопками. Но когда приложение находится на переднем плане или в фоновом режиме, оно отлично работает. Ребята, не могли бы вы помочь мне с этим? Я застрял в этом надолго.
Примечание. Я использую FCM для создания push-уведомлений. И полезная нагрузка находится в файле index.js.
Это моя функция:
func setActionCategories() {
let acceptAction = UNNotificationAction(
identifier:NAString().notificationAcceptIdentifier(),
title:NAString().accept().capitalized,
options: [.init(rawValue:0)])
let rejectAction = UNNotificationAction(
identifier:NAString().notificationRejectIdentifier(),
title:NAString().reject().capitalized,
options: [.init(rawValue:0)])
let actionCategory = UNNotificationCategory(
identifier:NAString().notificationActionCategory(),
actions: [acceptAction, rejectAction],
intentIdentifiers: [],
options: [.customDismissAction])
UNUserNotificationCenter.current().setNotificationCategories(
[actionCategory])
}
Здесь я выполняю действия над кнопками:
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
let notificationType = userInfo[Constants.FIREBASE_NOTIFICATION_TYPE] as? String
if response.notification.request.content.categoryIdentifier == NAString().notificationActionCategory() {
switch response.actionIdentifier {
case NAString().notificationAcceptIdentifier():
Print(“Accept”)
case NAString().notificationRejectIdentifier():
Print(“Reject”)
}
}
completionHandler()
}