didReceiveRemoteNotification函数调用了两次

时间:2019-04-16 16:50:03

标签: ios apple-push-notifications firebase-cloud-messaging swift4

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

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

我正在导航至viewcontroller中的其他didRecieve, 因此,以我为例,浏览两次到同一vc。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

  

注意

     

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

答案 1 :(得分:0)

您可以验证是否在后台:

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

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

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

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

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

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

希望获得帮助。