Ios 如何防止触发多个位置通知
我注册了多个位置通知,它们经常相互重叠。我想限制每天一次触发通知,但问题是,当应用程序被终止时,我无法取消所有挂起的通知,只能在触发BGAppRefreshTaskRequest时执行(这在大多数情况下并不常见)。最糟糕的是,如果用户位于重叠区域,他将同时收到多个推送通知 注册通知的代码:Ios 如何防止触发多个位置通知,ios,swift,xcode,push-notification,geofencing,Ios,Swift,Xcode,Push Notification,Geofencing,我注册了多个位置通知,它们经常相互重叠。我想限制每天一次触发通知,但问题是,当应用程序被终止时,我无法取消所有挂起的通知,只能在触发BGAppRefreshTaskRequest时执行(这在大多数情况下并不常见)。最糟糕的是,如果用户位于重叠区域,他将同时收到多个推送通知 注册通知的代码: let content = UNMutableNotificationContent() content.title = "Title" content.body = "Body" content.sound
let content = UNMutableNotificationContent()
content.title = "Title"
content.body = "Body"
content.sound = .default
content.userInfo = ["locationNotificationId" : id]
content.categoryIdentifier = "geofenceNotifications"
let region = CLCircularRegion(center: location,
radius: CLLocationDistance(range),
identifier: id)
region.notifyOnEntry = true
region.notifyOnExit = false
let trigger = UNLocationNotificationTrigger(region: region, repeats: false)
let request = UNNotificationRequest(identifier: id,
content: content,
trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: { error in
if let error = error {
print(error)
}
})
如果应用程序在后台或被杀死,我该如何防止在一个被触发后触发其他通知?好的,所以我通过监视区域本身而不是使用本地推送通知和UNLocationNotificationTrigger来解决问题。缺点是——我需要请求后台的位置访问,而不是“使用时”,我被限制在20个区域内,但这仍然比不受控制的推送通知流要好
要了解有关区域监视的更多信息:您可以通过以下方式取消通知:在计划之前删除所有挂起的NotificationRequests()或删除所有DeliveredNotifications()。检查是否有任何可用的挂起通知,然后不计划其他通知one@lali我可以使用removeAllPendingNotificationRequests删除它,但前提是它位于前台,否则我就没办法叫这个了function@SPatel问题不在于调度本身,问题在于如果应用程序在后台或被杀死,在一个被触发后无法删除所有调度的应用程序。但为什么要调度其他应用程序呢