Локальные вложения уведомлений исчезают в Центре уведомлений? - PullRequest
1 голос
/ 28 января 2020

У меня возникают проблемы с выяснением того, почему мои вложения для уведомлений недоступны, когда уведомление отправляется в Центр уведомлений (экран блокировки устройства или пролистывание сверху на главном экране).

Уведомления успешно доставляются, изображения отображаются в виде эскизов в виде баннера, а также в развернутом или длинном уведомлении, где находятся кнопки «Управление» и «Просмотр» по умолчанию. Если пользователь нажимает на уведомление, когда уведомление находится в режиме раскрывающегося баннера, уведомление открывает указанный контроллер представления в приложении, и изображение извлекается из уведомления и отображается в контроллере представления.

Однако, если уведомление просматривается после того, как оно отправляется в центр уведомлений (которое просматривается с экрана блокировки или смахивает вниз с верхней части главного экрана и выбирается из кнопок по умолчанию «открыть» или «просмотреть»), изображение отображается не передается указанному контроллеру представления. Другое содержимое уведомления, но не изображение.

В моей функции func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void), расположенной в моем AppDelegate, у меня есть следующий код:

print("ATTACHMENT IS: \(String(describing: response.notification.request.content.attachments.first))")

// GRAB 1ST NOTIFICATION ATTACHMENT AND CONVERT TO UIMAGE AND SET IN MESSAGECONTENT VC
                    if let attachment = response.notification.request.content.attachments.first {
                        if attachment.url.startAccessingSecurityScopedResource() {
                            if let data = NSData(contentsOfFile: attachment.url.path) as Data? {
                                messageContentVC.messagePicture = UIImage(data: data)
                                print("MESSAGEPICTURE VAR IS SET TO: \(String(describing: messageContentVC.messagePicture))")
                                attachment.url.stopAccessingSecurityScopedResource()
                            }

                            /* THIS WORKS FINE W/ BANNER DROP DOWN BUT NOT NOTIFCENTER
                            if let imageData = NSData(contentsOf: attachment.url) {
                                let image = UIImage(data: imageData as Data)

                                messageContentVC.messagePicture = image
                                print("MESSAGEPICTURE VAR IS SET TO: \(String(describing: messageContentVC.messagePicture))")
                                attachment.url.stopAccessingSecurityScopedResource()
                            }*/
                            else {
                                print("SOMETHING WENT WRONG IN APPDELEGATE TRYING TO PUSH MESSAGEPICTURE.")
                                print(" ")
                                print(" ")
                            } // END ELSE
                        } // END ATTACHMENT.URL
                    } // END ATTACHMENT = RESPONSE

Я пробовал и contentOfFile, и contentOf. в закомментированном разделе с тем же результатом: изображение уведомления передается в контроллер представления только в том случае, если пользователь касается начального раскрывающегося уведомления баннера.

Предыдущее выражение «ATTACHMENT IS:» показывает необязательное изображение как находящееся там непосредственно перед остальным кодом, показанным выше. Всякий раз, когда он добирается до остальной части кода, он заканчивается выражением «else».

Любое понимание или руководство, которое кто-либо может предложить, высоко ценится.

...