区域监视(也称为地理围栏)

我在一家人力资源外包公司工作,我们目前正在开发一个应用程序,该应用程序使用最先进的技术跟踪员工的办公时间。 基于上述构想,我们正在开发一种应用程序,该应用程序使用移动应用程序跟踪员工的时间安排和现场人员。 尽管我们在该应用程序中使用了多种技术。

我们将仅在此处讨论GEO FENCING。

应用程序的一些用例:

  • 实时无缝时钟输入-满足您所有业务需求的时钟输出
  • 时间表应用程序非常适合任何业务,它可以捕获实时数据,基于云,并且非常灵活。
  • 通过实时位置跟踪提高效率
  • 全方位的位置跟踪选项,能够通过移动设备跟踪员工。 获得有关员工如何在工作场所度过时间的透明视图。

区域监视(也称为地理围栏)是一种在用户进入或退出地理区域时向您的应用发出警报的方法。 您可以使用区域监视来执行与位置相关的任务。 例如,Reminders应用程序使用它们在用户到达或离开指定位置时触发提醒,如图1所示。

图1离开地理区域时通知用户

在iOS中,区域由系统监控,当用户越过定义的区域边界时,系统会根据需要唤醒您的应用。

地理围栏将对用户当前位置的意识与对用户可能感兴趣的位置的接近度的意识结合在一起。 要标记感兴趣的位置,请指定其纬度和经度。 要调整位置的接近度,请添加半径。 纬度,经度和半径定义地理围栏,在感兴趣的位置周围创建圆形区域或围栏。

定义和监视地理区域

区域是一个以地理坐标为中心的圆形区域,您可以使用CLCircularRegion对象定义一个CLCircularRegion 。 区域对象的半径定义其边界。 通过调用CLLocationManager对象的startMonitoring(for:)方法,可以定义要监视的区域并在系统中注册它们。 系统会监视您的区域,直到您明确要求其停止或直到设备重启为止。

清单1显示了如何配置和注册以该方法的调用者提供的点为中心的区域。 该方法使用允许的最大半径来定义区域的边界,并要求系统仅在用户进入区域时才发送通知。

清单1监视指定坐标周围的区域

  func monitorRegionAtLocation(center:CLLocationCoordinate2D,identifier:String){ 
//确保该应用已获得授权。
如果CLLocationManager.authorizationStatus()== .authorizedAlways {
//确保支持区域监视。
如果CLLocationManager.isMonitoringAvailable(for:CLCircularRegion.self){
//注册区域。
让maxDistance = locationManager.maximumRegionMonitoringDistance
设region = CLCircularRegion(center:center,
半径:maxDistance,标识符:标识符)
region.notifyOnEntry = true
region.notifyOnExit =假

locationManager.startMonitoring(用于:地区)
}
}
}

每当用户越过应用程序的注册区域之一的边界时,系统就会通知您的应用程序。 如果发生边界穿越时iOS应用未运行,则系统会尝试启动它。 支持区域监视的iOS应用必须启用“位置更新”后台模式,以便可以在后台启动。 具体来说,位置管理器调用其委托的locationManager(_:didEnterRegion:)locationManager(_:didExitRegion:)方法。 要确定您的应用是否针对某个位置事件而启动,请在启动选项字典中查找UIApplication.LaunchOptionsKey

清单2显示了一个委托方法,该方法在用户进入注册区域时被调用。 区域具有关联的标识符,此方法可使用该标识符来查找与该区域有关的信息并执行关联的操作。

在确定是否发生过境时,系统会在发送通知之前等待确定。 具体而言,用户必须在边界上移动最短距离,并在边界的同一侧停留至少20秒。 这些条件有助于消除对委托对象的方法的虚假调用。

清单2处理区域输入的通知

  func locationManager(_管理器:CLLocationManager,didEnterRegion区域:CLRegion){ 
如果让region = region as? CLCircularRegion {
让标识符= region.identifier
triggerTaskAssociatedWithRegionIdentifier(regionID:标识符)
}
}

(由用户或系统终止)应用程序不会阻止其重新启动以处理区域边界交叉。 但是,对于您的应用程序或所有应用程序禁用“后台应用程序刷新”时,用户必须显式启动您的应用程序以恢复所有与位置相关的事件的传递。

Interesting Posts