我正在向用戶發送本地通知,當他們進入區域時。不過,我不想立即通知他們,因爲他們有時會趕過這些地區,不想一直通知他們。在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