在应用程序处于非活动状态或在后台时停止当前的推送通知

时间:2019-03-27 13:48:54

标签: ios swift push-notification

当用户从我的应用程序注销后,我想停止显示通知。 我在下面尝试过。

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
    print("\n>>willPresent notification")

    if sharedManager.instance.isLoggedIn {
        completionHandler([.alert, .badge, .sound])
    }else{
         completionHandler([])
    }
}

当应用程序处于活动状态时,这是完美的工作方式。 但是问题是当应用程序处于后台或不活动状态时,此代码不起作用。

我检查了背景模式,那时没有调用willPresent notificationdidReceiveRemoteNotification方法。

在后台或非活动模式下接收推送通知时,哪种方法合适?

1 个答案:

答案 0 :(得分:1)

没有直接的方法可以处理这种情况。

您可以要求您的API开发人员在服务器端进行处理,

  1. 当用户单击注销按钮时,调用API进行注销并设置状态,isLoggedIn为false

  2. 对于每个将推送通知发送给用户的API,在服务器上,它首先检查用户的登录状态并可以相应地发送通知。

  3. 在“打开”上,再次在服务器的db中将isLoggedIn设置为true,然后它将再次开始接收通知。

希望有帮助。