ios - 在用户点击通知之前不调用 application(_:didReceiveRemoteNotification:fetchCompletionHandler)
问题描述
我在几个地方看到:
如果您的应用在前台或后台运行,系统会通过调用 application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 通知您的应用。当用户通过点击推送打开应用时,iOS 可能会再次调用该方法,因此您可以更新 UI 并显示相关信息。
背景:通知到达时。+ 如果用户在应用程序进入前台之前点击通知。
如果我设置"content-available": 1
并向通知添加一些数据有效负载,则当我的应用程序在后台然后当用户点击通知时,该方法application(_:didReceiveRemoteNotification:fetchCompletionHandler)
将被调用两次(除非我设置委托)。UNUserNotificationCenter
不幸的是,我没有注意到这种行为,上面的方法只在用户点击通知后被调用一次。
我尝试发送的通知类似于:
{
"aps": {
"alert": "Test",
"sound": "default",
"content-available": 1
},
"test": "abc"
}
iOS 13/14 有什么变化(Ray Wenderlich 教程似乎是最新的)还是我遗漏了什么?
编辑
有趣的是,多次重新安装该应用程序后,它开始工作。我设置了 UNNotificationCenterdelegate,它的工作方式如下:
- 应用程序在后台,服务器发送通知
content-available: 1
。 - 系统显示警报并被
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
调用,以便我可以获取新数据。 - 用户点击警报,
userNotificationCenter(_:didReceive:withCompletionHandler:)
被调用,因此我可以导航到特定视图。
这是处理带有数据有效负载的推送通知的正确方法吗?