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