2014-03-12 34 views
13

我在網上看到了新發布的iOS 7.1的iBeacon支持。iBeacon支持如何在iOS 7.1中真正改變?

具體做法是:

  1. 系統應該還在通知您的應用程序大約 didEnterRegion/didExitRegion事件,即使用戶明確 殺死你的應用程序。
  2. didEnterRegion/didExitRegion通知 應該是從背景更快和/或與鎖定裝置 。

我一直沒能證實這兩種權利與我自己的測試。實際上,我似乎是減去可能會從鎖定的設備獲取didEnterRegion/didExitRegion通知。 (更準確地說,我似乎得到了didEnterRegion通知,但不是didExitRegion通知)。這可能是因爲Apple讓我在我的info.plist中刪除了我的BLE背景模式條目 - 我不完全確定。我仍然試圖解決這個問題。

回答

20

我遇到了麻煩,在第一次設置我的測試,但我已經在兩個iPhone 4S和iPhone 5S模型的iOS 7.1殺死應用程序後,目睹背景區域進入回調。請參閱下面的評論以獲取測試細節和複製說明。

我也做在iPhone 4S上的後臺檢測時間的考驗,我仍然看到在iOS 7.1 15分鐘延遲。 My full test results and methodology are described here.

最後,我還對升級到iOS 7.1之前和之後在同一設備上的「精度」(以米爲單位)測量的波動進行了一些測試。估計中的噪音沒有明顯的差異。下面的圖表顯示了升級前後的結果,其中0.5米處的iBeacon持續60秒,然後移動到3米處持續60秒。在這兩種情況下,發射器都是經過正確校準的iPhone 4S w/iOS 7.1,接收器是iPhone 5S。

iOS 7.0.6

的iOS 7.0.6估計距離

iOS 7.1

的iOS 7.1推測距離

+0

感謝大衛的稱重。我希望聽到你的消息。 (投了贊成票。)我不會接受一段時間的答案,因爲我想盡可能多地聽到你的回答,但你的回答一如既往。 –

+0

P.S.我看到你在DC區域。下落?我在Great Falls/Sterling。 –

+0

我們的Radius Networks辦事處位於喬治敦。也許我們會在不久的將來在物質世界中相遇。 – davidgyoung

0

大衛做了這方面的一些奇葩,所以我小心翼翼寫這個..但我在測試中看到與他完全不同的東西。

我使用兩部手機:一部iPhone 4S運行iOS 7.1(11D167),並運行iOS 7.0.6(11B651)的iPhone 5S。我的iBeacons由Bluecats(www.bluecats.com)生產和銷售,雖然我還沒有使用他們的SDK(即我只是使用CoreLocation),我不認爲製造商有什麼區別。

我得到的兩個設備上大約1-2秒的響應時間,當應用程序在前臺運行在後臺運行時也。唯一的區別是當我從應用程序切換器中刪除應用程序時:iOS 7.0.6從不響應(或者可能在15分鐘內完成),但iOS 7.1在大致相同時間內響應。當我說「響應」時,我的意思是CLLocationManager的locationManager:didDetermineState:forRegion:delegate由iOS調用。

我正在用手機在我的辦公室周圍漫遊,所以我在身體上移動和移出範圍。奇怪地(?),在我的早期測試中,我坐在辦公桌前,模擬移動和重新插入電池進入和退出範圍,我看到響應時間慢得多。也許這是差異的一部分?

+0

可以肯定的是,「但iOS 7.1大致同時響應」是否意味着iOS 7.1在應用程序從應用程序切換器終止後的1-2秒後會響應? – Segev

0

在我的測試中,我看到了一個應用程序長達15分鐘沒有注意到燈塔的存在,但我發現了一些有趣的東西。我使用RedBearLabs迷你BTLE傳感器作爲ibeacons和他們的應用程序來編程信標,http://redbearlab.com/ibeacon/http://redbearlab.com/s/MiniBeacon_v1.zip)似乎有一些東西可以立即開始掃描/更新信標。如果我啓動了一個烽火臺,並且在我的應用程序中它不被注意到,通過開始然後退出MiniBeacon應用程序,我的應用程序立即通知我,有新的信標。進入或退出時結果相同。他們的應用程序使用CBCentralManager,我的應用程序沒有,所以也許CBCentralManager和CLBeaconRegion之間的混合是要走的路?我想CLBeaconRegion啓動/重新啓動藍牙無線電,所以也許這是原因。希望能夠幫助解決這個問題的人更加完整。

感謝

+0

我也見過這個。相同設備上的兩個應用程序絕對可以通過直接進行CoreBluetooth或通過測量iBeacons進行BLE掃描來相互影響。如果某個應用在前臺執行BLE掃描,則BLE掃描結果將立即觸發後臺任何應用的iBeacon檢測。我懷疑這是你用MiniBeacon應用程序看到的。不幸的是,這對於加快後臺檢測無用,因爲您無法控制外部應用程序的掃描行爲。 – davidgyoung

1

正如在幾篇文章在互聯網流傳被提及,甚至當你刷你的應用從多任務視圖遠信測可用。然而在我的實驗中,區域進入/退出事件並不直接調用didDetermineState:(可能是因爲我沒有使用AppDelegate來啓動任何信標檢測,而是基於UI事件觸發監控)。相反,如果您註冊了「後臺位置更新」,則您的AppDelegate的didFinishLaunchingWithOptions:方法將在參數launchOptions集中使用值UIApplicationLaunchOptionsLocationKey進行調用。

您可以這樣做一個簡單的檢查來測試這是否確實是位置更新,它已將您的應用程序購買到後臺以執行某些任務。

if ([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]) 

然後,您可以再次註冊您的監控區域或立即開始測距。

P.S. CLLocationManager保留您以前在應用monitoredRegions還原,但不再次開始監視使用相同的UUID和身份,你不會得到CLLocationManagerDelegate的進入/退出區域事件(這帶來了你的備份到生命)

0

我的測試也在iOS7.1.1上我的應用程序處於後臺模式時重現15分鐘以開始掃描。只是有點好奇,我看到很多來自不同公司的YouTube視頻顯示,應用程序一接近它們的信標就一直從後臺模式喚醒。它是銷售手段嗎?

+0

我得到非常混雜的結果。有時我的應用程序會被喚醒並立即收到通知。更多的時候需要幾分鐘。我只看到了整整15分鐘的延遲幾次。我認爲這是一個「最壞情況」的反應時間。 –

+0

讓我分享一下我們的測試。1)在前景中,像其他人一樣,幾乎立即; 2)當應用程序不在前臺,但另一個應用程序,大約15分鐘響應,3)手機在鎖定時喚醒,結果似乎不一致,從1-2秒到7-8秒不等4)手機沒有喚醒,結果也不一致,從4-5秒變化到10+,比3慢得多)。 – Hammer