2014-01-23 76 views
5

我想構建和應用程序,它可以在65英尺範圍內使用我的應用程序檢測到其他iPhone。據我瞭解,我有以下選擇:iOS:檢測附近的應用用戶

  1. 使用藍牙來定期檢查是否有範圍內我的應用程序的設備。將找到的設備列表發送到服務器。這裏的問題是電池消耗。藍牙是否會在一段時間後自動關閉?

  2. 我可以爲此使用BLE技術嗎?如果是這樣,你知道哪些設備支持BLE?

什麼是您的意見的最佳選擇?我錯過了其他一些選擇嗎?

感謝

UPDATE 我打算運行搜索每20秒甚至更頻繁。

+0

請注意,您所談論的內容只能用於查找實際在前臺運行應用的附近設備,而不僅僅是查找其他設備。 – rmaddy

+0

@rmaddy,我知道。這正是我需要的。 –

回答

8

這個問題沒有簡單的答案。

藍牙有2種口味:「正規」的藍牙,使用免提設備,耳機等,BLE(低功耗藍牙)

普通藍牙設備必須配對。 (我不太熟悉普通藍牙而不是BLE,所以我要用一點鹽來解釋這一點)。爲了配對,他們必須進入「可發現」模式,播放他們的ID。這是一個電池耗盡,只做簡單。這不是一個「永遠在線」的解決方案。

BLE的範圍可達60米,所以它應該滿足您在這方面的需求。

BLE設備可以長時間「廣告」爲「外設」。其他藍牙設備可以充當「中心」,並要求在檢測到某些外圍設備時收到通知。我不確定您是否可以將iOS設備作爲BLE外設在廣告背景中進行廣告(廣播),以及/或者設備是否被鎖定,但它肯定會在廣告運行時進行廣告宣傳。我很肯定你可以註冊,當你從背景中檢測到特定的BLE外設時得到通知,但不是肯定的。

iBeacons是BLE的特定用途,具有一些額外的限制和一些額外的能力。 iBeacon是一個簡單易用的發射機,它週期性地發送UUID加上主要和次要值以及信號強度校準值(通常每秒一次)。您不能將任何其他數據添加到iBeacon傳輸中。當應用程序處於前臺時,iOS只能充當iBeacon發射器。如果您的應用移動到後臺,它將停止傳輸。期。

但是,您甚至可以從後臺偵聽iBeacon信號。而且,如果您已註冊爲iBeacon的監聽器,並且系統由於內存不足而終止您的應用程序,則系統仍代表您監聽這些信標。如果iOS檢測到您正在監聽的信標,則會在需要時重新啓動,並在後臺通知。然後,您可以發佈本地通知以獲得用戶的關注。

iBeacon可能是您最好的選擇,但您需要您的用戶在前臺主動運行您的應用程序才能傳輸信號。這會很快耗盡用戶的電池電量。

+0

感謝您的好解釋。但想象一下,如果我的所有用戶都會一直監聽iBeacons(默認情況下)。一旦他們中的一個決定向其他人發送一些數據,他會將應用程序放在前臺,並將其本身作爲iBeacon發射器。其他人會被告知用戶的外觀嗎?或者其他人應該傾聽特定的iBeacon(即事先了解關於前臺應用程序的用戶)? –

+1

你必須聽特定的信標。您可以偵聽特定的UUID並且不指定主要或次要值,並要求更新範圍。當您從檢測不到信標到檢測一個或多個信號時,您會收到範圍內所有信標信息的測距呼叫幾秒鐘。如果切換到前臺,您可以繼續測距,並獲得有關所有信標的信息。您可以讓每個用戶使用不同的主要和次要值作爲他們的用戶ID(2 16位值或大約40億個唯一ID –

1

一個可能的解決方案是讓每臺設備在每個預定時間段(更頻繁,更好但更耗費資源)將其位置發送到您的服務器。然後,從服務器查詢數據並獲取您附近所有設備的位置。

請記住,這可能不會對實時數據收集非常有用。例如,如果你想每隔30秒發送一次數據,這不是一個好的選擇。

如果您想每15-20分鐘左右獲取一次數據,請使用此選項。

+3

您是否認爲每隔20秒向服務器發送一次地理定位將比每隔20秒追蹤BLE設備「便宜」?每20秒鐘檢查一次藍牙設備怎麼樣? –

+0

每20秒鐘?不,不要將數據發送到服務器。我不知道BLE或普通藍牙的距離超過50英尺。 – Programmer

+0

@程序員我不確定這是否回答帕維爾的問題... – huyz

相關問題