我想向用户展示3个不同的本地通知,因为他即将到达精确点。所以我设置了3个中心相同但半径不同的圆形区域(500米,1公里,2公里)。当我接近这一点时,我一次收到所有3个通知。为什么会发生这种情况?我是不是在下面的代码中做错了什么,或者只是苹果的函数显示了更多的区域通知,从而消耗了更少的电池?我是否可以通过其他方式来完成此操作(当用户接近某个点时向其发出警报?
func createLocalNotification(id: String, title: String, body: String, center: CLLocationCoordinate2D, radius: CLLocationDistance, repeats: Bool) {
let notificationCenter = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = title
content.body = body
content.sound = UNNotificationSound.default()
let region = CLCircularRegion(center: center, radius: radius, identifier: id)
region.notifyOnEntry = true
region.notifyOnExit = false
let trigger = UNLocationNotificationTrigger(region: region, repeats: repeats)
let request = UNNotificationRequest(identifier: id, content: content, trigger: trigger)
notificationCenter.add(request) { (error) in
if let error = error {
print("Uh oh! We had an error: \(error)")
}
}
}发布于 2018-01-26 21:58:01
请确保在测试应用程序时考虑以下几点:
在iOS模拟器或设备上测试区域监控代码时,要意识到区域事件可能不会在跨越区域边界后立即发生。为了防止虚假通知,iOS不会发送地域通知,直到满足一定的阈值条件。具体地说,在报告通知之前,用户的位置必须越过区域边界,远离边界最小距离,并保持在该最小距离上至少20秒。
具体的阈值距离由硬件和当前可用的定位技术确定。例如,如果禁用Wi-Fi,则区域监控的准确性会大大降低。但是,出于测试目的,您可以假设最小距离约为200米。
https://stackoverflow.com/questions/48443944
复制相似问题