2015-10-23 26 views
1

這裏的情況是:
我有一個自制的燈塔其中一些廣告比其UUID,主要價值,次要價值更多的數據(溫度數據)。當我的應用程序在前臺掃描時,可以獲取更新後的溫度值(無需連接)。另外,當有一個"didEnterRegion"事件時(僅在應用程序關閉時),我會得到一個簡單的本地通知(說「輸入信標範圍!」)。iOS 7-iBeacon:如何從應用程序關閉時從其UUID獲取比iBeacon更多的數據?

我想在此通知設定變更後的溫度值,但我掙扎這一點。有沒有人已經做過這樣的事情? 我只找到這個:ibeacon-get-major-and-minor-only-looking-for-uuid,但它沒有幫助,因爲值仍然是固定的。

任何提示?

+0

你有沒有看下槓桿核心藍牙API?我認爲即使在廣告階段,您也可以做任何您需要的事情。 – zoul

+0

你如何檢索額外的數據?通過CoreBluetooth特性?你可以在後臺使用核心藍牙 – Paulw11

回答

0

您可以使用CoreBluetooth閱讀無論是在前景和背景廣告。但是各種廣告類型的規則是不同的。

  • 製造商的廣告類型可以當一個應用程序在前臺是隻讀的。應用程序在後臺不會在iOS上獲得回調。

  • 服務廣告可以在前景和背景兩者讀取。這些服務必須具有服務UUID,並且可以包含其他服務數據。

  • iBeacon顯示廣告,這是製造商的廣告的特定圖案具有是可通過CoreBluetoothblocked from being read在前景和背景兩者的數據。標識符可以在前景和背景中被CoreLocation讀取。但他們沒有額外的數據。

如果你想閱讀廣告的臨時數據(無連接)的背景,你有兩個選擇:

  1. 讓你的信寄自定義服務的廣告,在該服務的溫度廣告數據。

  2. 使用iBeacon顯示和編碼無論是在主要或次要字段中的溫度數據。

+0

我已經找到了所有這些信息,但它很困惑。 Ty說清楚:)所以,因爲當應用程序未運行時,我無法獲取更新的數據,而次要/主要字段對於數據來說不夠(太短,溫度不是唯一的),我可以確定的唯一方法是在後臺重啓應用程序,開始掃描(使用CoreBluetooth),獲取我的數據,然後停止應用程序。這甚至有可能嗎?爲了什麼我知道,一個應用程序可以在後臺去,只有當它在前臺之前...... – RemH

+0

是的,一個應用程序可以啓動本身即使還沒有被啓動通過檢測iBeacon顯示推出的背景。發生這種情況時,您在此時讀取背景中BLE數據的唯一方法就是服務廣告。因此,您需要一個自定義信標,它發送一個iBeacon廣告以在後臺喚醒併發送服務廣告來發送數據。 – davidgyoung

相關問題