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

标签 ios apple-push-notifications unnotificationserviceextension

有一个场景,我需要检查用户是否应该根据他的位置接收推送通知。我知道 UNNotificationServiceExtension 帮助我们拦截通知并有助于构建推送内容。但是,对于此类或其他任何地方,我们是否有可能不通过检查用户的位置来显示推送通知?

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

最佳答案

使用 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
    }

关于ios - 我们可以避免显示推送通知吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52310310/

相关文章:

mysql - NSIndexPath 保存到另一个实体

ios - 如何修复 Twilio 可编程语音错误 - 52134 无效的 APNs 设备 token

ios - 在删除并重新安装应用程序后重新生成推送通知权限的 iOS 系统警报

ios - 在通知服务扩展和主应用程序之间共享数据

ios - 如何将用于共享内容的 LinkedIn API 从 OAuth 1.2 转换为 OAuth2

ios - 我们可以将 C++ 文件添加到 iOS 项目中吗?

ios - 什么时候调用 didRegisterForRemoteNotificationsWithDeviceToken?

ios - 在 ios swift 的 NotificationService 中播放流媒体 URL

xcode - 在模拟器中测试丰富的通知

用于白标应用程序的 iOS 静态库代码库