簡體   English   中英

使ios7 BLE外設在后台工作

[英]Making ios7 BLE peripheral to work in background

我已經閱讀了所有相關信息,但仍無法使我的iOS7設備在后台像外圍廣告客戶一樣工作。 它在前景很好,但在后台我什至可以發現它。 我在plist文件中使用CoreBluetooth添加了應用共享數據 我讀到,進入后台后,它將我的自定義UUID放入溢出數據中。 我也嘗試過這個(但沒有運氣)。

NSDictionary *advertisingData = @{
 CBAdvertisementDataServiceUUIDsKey : @[CBUUID UUIDWithString:TRANSFER_SERVICE_UUID],
 CBAdvertisementDataOverflowServiceUUIDsKey : @[CBUUID UUIDWithString:TRANSFER_SERVICE_UUID]
};  
[manager startAdvertising:advertisingData];

在另一端的中央(MAC OS應用程序),我僅在掃描我的: TRANSFER_SERVICE_UUID服務。 有什么我想錯過的事情我應該在中央方面另外實施嗎?

請注意startAdvertising:方法文檔中的這一行:

當應用程序在后台運行時,將不使用本地名稱,並且所有服務UUID都將放置在“溢出”區域中 但是,未指定“藍牙外圍設備”后台模式的應用程序將無法在后台進行任何廣告。

也就是說,背景外圍設備會從廣告中刪除所有內容,並且 iOS應用程序只能檢測到它的存在 iOS應用程序可以到達溢出區域,而MacOS應用程序則不能。 您需要在MacOS端關閉服務過濾,才能檢測外圍設備並連接到外圍設備,以發現外圍設備是否具有搜索到的服務。

僅供參考,這種情況沒有解決方法,在Apple bluetooth-dev郵件列表和許多SO問題中已經討論了多次。

另請注意, CBAdvertisementDataOverflowServiceUUIDsKey不是startAdvertising:的有效輸入鍵。 CBAdvertisementDataOverflowServiceUUIDsKey通過iOS版在返回didDiscoverPeripheral回調,如果它發現在溢出區的東西。 僅使用CBAdvertisementDataServiceUUIDsKey定義播發服務的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM