2013-03-22 52 views
1

我正在使用GeoFencing設置區域,並在用戶進入或離開區域時執行一些任務。 BT它不是爲我工作,我使用gollowing代碼iOS上的GeoFencing

CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(some values,some values); 
    CLRegion *region = [[CLRegion alloc]initCircularRegionWithCenter:coord radius:15.0 identifier:@"SF"]; 
    [locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyBest]; 

但代表didEnterRegiondidExitRegion當我關閉應用程序和應用程序的監測和我從搬走被稱爲無地區或進入。

+0

你是什麼意思?通過主頁按鈕發送到背景,或終止應用程序?已終止的應用程序無法運行。 – AlexWien 2013-03-22 11:48:36

+0

它不會立即被調用,有一個緩衝區,它仍然不會觸發通知。 – Pochi 2013-05-28 03:51:32

回答

3

您定義了半徑15米。這太小了。首先,嘗試50米或更多。看看地圖應用程序,如果你真的進入了該地區。
此外,我希望你的意思是「發送到後臺」,而不是關閉。
確保您已將您的應用設置爲允許在後臺運行? (通過的plist)

更新:

最後事實證明,你終止應用程序。那麼當然你不會再有任何loctaion事件了。
解決方案: 不要通過選擇白色十字,然後雙擊主頁按鈕來終止它,只需單擊主頁按鈕關閉它,然後它有機會在後臺運行。

UPDATE2: 即使該應用程序被終止,內部監督辦公室將重新啓動它時,它已經註冊到位置監控服務:如果您啓動此服務 從CllLocationManager Class Reference

和您的應用程序隨後 如果新事件到達,則系統自動將應用程序重新啓動爲 ...

+0

我已經允許應用程序在正常工作的後臺運行。我完全關閉了應用程序,當應用程序完全關閉時Geofencing不工作嗎?我可以在狀態欄和設置中看到GeoFencing圖標。 – Hassy 2013-03-22 12:14:29

+0

你是否通過雙擊主頁按鈕zclose它,並點擊十字?這是終止,那麼你的應用程序沒有運行。這不是背景! – AlexWien 2013-03-22 13:32:15

+0

:)是的,我確實終止了應用程序。有沒有辦法在用戶進入某個區域時自動喚醒我的應用程序? – Hassy 2013-03-22 17:43:18

1

在頭文件中添加CLLocationManagerDelegate。 確保ü添加

locationManager.delegate = self; 

嘗試增加半徑和檢查。

+0

是的,我已經做到了。半徑是否超過100? – Hassy 2013-03-22 12:15:21

1

首先增加您爲特定位置提供的半徑,然後再次檢查它是否失效,然後按照此tutorial中提供的一些簡單步驟,您可以輕鬆地在您的應用中實施Geo-Fencing。

參考:Apple Documentation

0

您可以定義15米的半徑。這太小了。首先,嘗試50米或更多。看看地圖應用程序,如果你真的進入了該地區。 此外,我希望你的意思是「發送到後臺」,而不是關閉。 確保您已將您的應用設置爲允許在後臺運行? (via plist)