didReceiveRemoteNotification函数调用两次

问题描述 投票:0回答:2

我正在使用firebase云消息传递我的自定义JSON有效负载实现推送通知,并且它正在运行。

我现在面临的问题是当我触发通知时,didRecieve被调用,当用户点击通知警报时,它会被再次调用。

我正在航行到viewcontroller的其他didRecieve,所以在我的情况下导航到两次相同的vc。

我该如何处理这个问题?

ios apple-push-notifications firebase-cloud-messaging swift4
2个回答
0
投票

如果您正在实施application(_:didReceiveRemoteNotification:fetchCompletionHandler:),这可能是预期的行为,如here in the docs所述:

注意

如果用户从系统显示的警报中打开您的应用程序,系统可能会在您的应用程序即将进入前台时再次调用此方法,以便您可以更新用户界面并显示与通知相关的信息。


0
投票

您可以验证是否在后台:

if (application.applicationState == .background) {
      completionHandler(.noData)
      return
}

您可以使用willPresent方法创建alert消息。

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (_ options: UNNotificationPresentationOptions) -> Void) {}

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

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

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

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.