didReceiveRemoteNotification函数调用两次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了didReceiveRemoteNotification函数调用两次相关的知识,希望对你有一定的参考价值。

我正在使用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) {}

您也可以选择禁用应用内通知。

如果您需要应用程序通知和触摸选项:

您可以验证活动控制器是否已经是您需要的控制器。

希望这有帮助。

以上是关于didReceiveRemoteNotification函数调用两次的主要内容,如果未能解决你的问题,请参考以下文章

尽管 content_available = true,但没有在后台调用 didReceiveRemoteNotification