Касание удаленного уведомления не обрабатывается, когда приложение закрываетсяIOS

Программируем под IOS
Ответить
Anonymous
 Касание удаленного уведомления не обрабатывается, когда приложение закрывается

Сообщение Anonymous »

У меня возникла проблема с удаленными push-уведомлениями на iOS.
Когда приложение в фоновом режиме или неактивно, правильное нажатие на уведомление срабатывает:

Код: Выделить всё

userNotificationCenter(_:didReceive:withCompletionHandler:)
…но когда приложение завершено, нажатие на уведомление запускает приложение, однако ни один метод делегирования не срабатывает, и мое событие отслеживания никогда не отправляется.
Я использую:
  • SwiftUI @ основное приложение
  • @ UIApplicationDelegateAdaptor для AppDelegate
  • Делегат UNUserNotificationCenter установлен вручную
  • FirebaseAppDelegateProxy отключен
  • Нет SceneDelegate
Я пробовал:
  • Проверить параметры запуска?[.remoteNotification] (не запускается на iOS 15+)
  • Добавление приложения (_:continue:restorationHandler:)
  • Запретить появление баннеров во время запуска (предложение от ChatGPT, но никакой разницы)
Обработка касания на переднем и заднем плане работает отлично — только killed → Tap → Launch не может доставить полезную нагрузку. черт возьми, я даже не вижу журналов для этого потока.
У меня есть код:

Код: Выделить всё

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey : Any]?
) -> Bool {

UNUserNotificationCenter.current().delegate = self
return true
}

func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
handleNotificationTap(response.notification.request.content.userInfo)
completionHandler()
}

public func handleNotificationTap(_ userInfo: [AnyHashable : Any]) {
let id = userInfo["notification_id"]
let notificationId = (id as? Int).map(String.init) ?? (id as? String)

if let finalId = notificationId {
Analytics.track("notification_opened", parameters: ["notification_id": finalId])
} else {
Analytics.track(
"notificationTappedWithoutID",
parameters: ["payload": userInfo]
)
}
}
Как видите, всегда должно быть какое-то событие, но в настоящее время я его не получаю. я также попробовал DidReceiveRemoteNotification, но это тоже не сработало.
Буду признателен за любую помощь. искал это уже несколько ночей.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -is-killed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»