[英]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.