首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时触发不同radius CLCircularRegion的基于位置的通知

同时触发不同radius CLCircularRegion的基于位置的通知
EN

Stack Overflow用户
提问于 2018-01-25 21:25:06
回答 1查看 592关注 0票数 2

我想向用户展示3个不同的本地通知,因为他即将到达精确点。所以我设置了3个中心相同但半径不同的圆形区域(500米,1公里,2公里)。当我接近这一点时,我一次收到所有3个通知。为什么会发生这种情况?我是不是在下面的代码中做错了什么,或者只是苹果的函数显示了更多的区域通知,从而消耗了更少的电池?我是否可以通过其他方式来完成此操作(当用户接近某个点时向其发出警报?

代码语言:javascript
复制
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)")
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-01-26 21:58:01

请确保在测试应用程序时考虑以下几点:

在iOS模拟器或设备上测试区域监控代码时,要意识到区域事件可能不会在跨越区域边界后立即发生。为了防止虚假通知,iOS不会发送地域通知,直到满足一定的阈值条件。具体地说,在报告通知之前,用户的位置必须越过区域边界,远离边界最小距离,并保持在该最小距离上至少20秒。

具体的阈值距离由硬件和当前可用的定位技术确定。例如,如果禁用Wi-Fi,则区域监控的准确性会大大降低。但是,出于测试目的,您可以假设最小距离约为200米。

Documentation

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48443944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档