2015-12-26 66 views
1

我正在開發iOS應用程序來監視iBeacons。它在前景和背景中運作良好。即使屏幕關閉,我也需要它來保持監視。現在我的問題是,當我用肩按鈕關閉屏幕時,NSLog顯示相應的iBeacon信號熄滅(RSSI = 0,beacon.accuracy = -1.0),10秒鐘後,根本沒有找到信標,而連續調用委託方法locationManager:didRangeBeacons:inRegion:。看起來,該應用程序正在運行時,屏幕關閉,但iOS關閉iBeacon範圍的位置服務。我試圖設置「locationManager.pausesLocationUpdatesAutomatically = NO;」但仍然不起作用。有沒有關於這個問題的建議?提前致謝。如何在iOS屏幕關閉時繼續監控iBeacon?

+0

嘗試設置此locationManager.allowsBackgroundLocationUpdates = YES;這是iOS 9必需的 –

+0

這聽起來不正常。你可以在第二個iOS設備上重現這種行爲嗎? – davidgyoung

+0

我試過「locationManager.allowsBackgroundLocationUpdates = YES;」剛纔,仍然不起作用。我的設備上的iOS版本是9.2。 – kuang

回答

0

看來你在做範圍而不是監測。測距僅適用於應用程序處於活動狀態時 - 無論是在前景還是在後臺。值得注意的是,iOS會自動讓應用程序在離開它幾秒鐘後進入睡眠狀態,或者鎖定屏幕。

你必須記住的是,在iOS上真的沒有「永久背景狀態」這樣的東西。應用程序在後臺運行一段有限的時間,同時轉換到掛起狀態(以允許它們完成上傳/下載),並且還有後臺模式,有時會使應用程序在後臺運行,但通常會保留這些模式對於非常特定的應用程序 - 例如,「音頻」後臺模式意味着只要播放音樂等,應用程序就可以在後臺運行。有一種用於「位置」服務的後臺模式,但它保留用於逐行轉換,轉動導航應用。

信標監控然而,即使您的應用程序進入睡眠狀態,或者由於內存壓力而被iOS終止,它仍會繼續運行。當您進入或離開信標範圍時,iOS會將您的應用程序啓動到後臺來處理事件,並給它幾秒鐘的時間(您可以使用Background Execution Task延長几分鐘)來完成此事(您可以在那段時間內),但隨後又回到了睡眠狀態。

你可能也想看看這個問題:
Receive signal from beacon while app is in the background