我正在使用Firebase云消息传递功能通过自定义JSON有效负载实现推送通知,并且它正在运行。
我现在面临的问题是当我触发通知时, didRecieve
被调用,当用户点击通知警报时,它会再次被调用。
我正在导航到didRecieve
的其他viewcontroller
,所以在我的情况下,导航到两次到同一个 VC。
我该如何处理这个问题?
如果您正在实现 application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
,这可能是预期的行为,如文档中所述:
注意
如果用户从系统显示的警报打开你的应用,则系统会 当应用即将进入 前台,以便您可以更新用户界面并显示与通知相关的信息。
您可以验证是否在后台:
if (application.applicationState == .background) {
completionHandler(.noData)
return
}
可以使用 willPresent
方法创建alert
消息。
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (_ options: UNNotificationPresentationOptions) -> Void) {}
您也可以选择禁用应用内通知。
如果您需要在应用程序内通知和触摸选项:
您可以验证活动控制器是否已是所需的控制器。
希望这有帮助。