我们可以避免显示推送通知吗

时间:2018-09-13 09:07:23

标签: ios apple-push-notifications unnotificationserviceextension

在某些情况下,我需要根据用户的位置检查用户是否应该收到推送通知。我知道UNNotificationServiceExtension可帮助我们拦截通知并有助于构建推送内容。但是对于此类或其他事情,我们是否可能通过检查用户的位置而不显示推送通知呢?

这并不意味着我每次都想这样做。但是只有当我的条件不满足时。在通知内容中,我将获取用户的上一个跟踪位置,并将其与用户的当前位置进行比较。
我经历了this,但没有得到令人信服的答案。
注意:我不是在寻找无声推送通知解决方案。

1 个答案:

答案 0 :(得分:2)

使用UNUserNotificationCenter,您可以按ID取消单个通知。

UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [SomeID])

您必须实现UNUserNotificationCenterDelegate并实现 userNotificationCenter(_:willPresent)

类似的东西:

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        let identifier = notification.request.identifier
        let content = notification.request.content
        //your logic here
    }