为啥用户单击通知时不存在 userInfo?
Posted
技术标签:
【中文标题】为啥用户单击通知时不存在 userInfo?【英文标题】:Why is userInfo not present when user clicks notification?为什么用户单击通知时不存在 userInfo? 【发布时间】:2020-11-22 11:54:18 【问题描述】:我使用以下功能来显示通知(该部分有效)。
func showNotification(_ body: String, _ config: Config)
let content = UNMutableNotificationContent()
content.body = body
content.userInfo = ["logFile": config.logFile]
let request = UNNotificationRequest(
identifier: UUID().uuidString,
content: content,
trigger: nil
)
UNUserNotificationCenter.current().add(request) (error:Error?) in
if error != nil
print(error?.localizedDescription ?? "Could not add notification")
当应用未运行,用户点击通知中心的通知时,我使用以下函数尝试获取userInfo
,但该属性不存在。
func applicationDidFinishLaunching(_ notification: Notification)
DispatchQueue.main.async
let alert = NSAlert.init()
alert.messageText = String(describing: notification.userInfo)
alert.runModal()
为什么?
【问题讨论】:
【参考方案1】:找出原因!
我试图在applicationDidFinishLaunching
中获取userInfo
,但获取userInfo
的正确方法是使用userNotificationCenter
(无论应用程序是否正在运行)。
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
)
DispatchQueue.main.async
let alert = NSAlert.init()
alert.messageText = String(describing: response.notification.request.content.userInfo)
alert.runModal()
【讨论】:
以上是关于为啥用户单击通知时不存在 userInfo?的主要内容,如果未能解决你的问题,请参考以下文章
如何观察 RestKit 中是不是存在字段。值为 null 时不调用 Setter