получение системного предупреждения при получении push-уведомления - PullRequest
0 голосов
/ 23 сентября 2019

Я реализовал push-уведомление в своем проекте, и проблема, с которой я столкнулся, заключается в том, что в промежуточной среде, которая отлаживается, уведомление получено, и когда я нажимаю на него, оно переходит к представлению, к которому я хочу перейти, нов производственном приложении, когда я нажимаю на nofification, я получаю это в своей консоли xcode

Предупреждение: делегат UNUserNotificationCenter получил вызов -userNotificationCenter: didReceiveNotificationResponse: withCompletionHandler: но обработчик завершения никогда не вызывался.

Я понятия не имею, почему для такого поведения и любая помощь приветствуется

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

    func extractUserInfo(userInfo: [AnyHashable: Any]) {
        log("FirebaseTest App already open blllll \(userInfo)", .fuck)
        let aps = userInfo["aps"] as? NSDictionary
        log("FirebaseTest App already open aps \(aps)", .json)
////        let info = userInfo as? NSDictionary
        if let type = userInfo["type"] as? String {
            Storage.instance.savePush(type)
            if type == "new_property" {
                if let meta = userInfo[AnyHashable("meta")] as? String {
                    if let data = meta.data(using: .utf8) {
                        do {
                            if let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any] {
                                guard let propertyId = json["property_id"] as? String, let id = Int(propertyId) else {return}
                                NotificationEvent.isFromNotification.accept(true)
                                NotificationEvent.id.accept(id)
                            } else {
                                print("JSON is invalid")
                            }
                        } catch {
                            print("Exception converting: \(error)")
                        }
                    }
                }
            } 
        }

    }

1 Ответ

0 голосов
/ 23 сентября 2019

Просто вызовите обработчик завершения после завершения вашей задачи, как показано ниже

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    let userInfo = response.notification.request.content.userInfo
    extractUserInfo(userInfo: userInfo) /// your task
    completionHandler() /// notify system
} 
...