首页 > 解决方案 > 本地通知附件在通知中心消失?

问题描述

一旦通知进入通知中心(设备锁定屏幕或从主屏幕顶部向下滑动),我无法弄清楚为什么我的通知附件不可用。

通知已成功传递,图像在横幅视图中显示为缩略图,并在默认“管理”和“查看”按钮所在的展开或长视图通知中。如果用户在通知处于下拉横幅模式时点击通知,则通知会在应用程序中打开指定的视图控制器,并从通知中抓取图像并显示在视图控制器中。

但是,如果在通知中心进入通知中心后查看通知(即从锁定屏幕查看或从主屏幕顶部向下滑动并从默认的“打开”或“查看”按钮中选择),则图像未传递给指定的视图控制器。另一个通知内容是,但不是图像。

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

我在注释掉的部分尝试了 contentsOfFile 和 contentsOf ,结果相同:只有当用户触摸初始下拉横幅通知时,通知图像才会传递给视图控制器。

前面的“附件是:”语句将可选图像显示为就在上面显示的其余代码之前。每当它到达代码的其余部分时,它都会在“else”语句中结束。

非常感谢任何人可以提供的任何见解或指导。

标签: iosswiftnotificationsattachment

解决方案


推荐阅读