我正在向用户发送本地通知,当他们进入区域时。不过,我不想立即通知他们,因为他们有时会赶过这些地区,不想一直通知他们。在30秒后检查用户是否仍在CLRegion中 - 1分钟
所以无论何时用户输入区域,didEnterRegion被调用。我想等待30秒(或可配置的时间),然后检查用户是否仍然在该地区(我知道该怎么做),如果用户仍在该地区,则通知用户。
Android有一种方法可以做到这一点与居住财产。
我知道我可以使用dispatch_after(),但当手机处于睡眠状态(或应用程序暂停)时,我无法获得主线程。
当输入区域时,手机会自动按Apple设计自动唤醒。发生这种情况时,我想等待30秒,然后再次检查用户是否仍在位置。这里有一个代码片段当前不工作:
// triggered when user enters monitored region.
func locationManager(manager: CLLocationManager, didEnterRegion region: CLRegion) {
// Wait 60 seconds and if user is still within region, try to send notification
delay(60){
self.locationManager.requestStateForRegion(region)
}
}
func locationManager(manager: CLLocationManager, didDetermineState state: CLRegionState, forRegion region: CLRegion) {
// only notify user if user is still within this region.
if state == CLRegionState.Inside{
if region is CLCircularRegion {
handleRegionEvent(region)
}
}
}
你不能单独使用区域监控来做到这一点。你需要别的东西在后台触发你的应用。您可以在位于该地区后启动完整位置更新,也可以使用服务器发送静默推送通知。你也可以看看开始访问监测 – Paulw11