首先:我有一臺iPad Air 2和一臺iPhone 7.爲了進一步閱讀,我們估計該應用程序在iPad上處於活動狀態並在iPhone上以後臺模式打開。該應用程序是完全相同的,即使使用相同的藍牙服務UUID和相同的DataLocalNameKey。iOS背景下的CoreBluetooth廣告10
我想寫一個應用程序,可以在後臺廣告藍牙服務,並能夠發現此服務(最佳在後臺也)。 As I already read我不能使用蘋果信標技術,因爲它只能在背景附近掃描/通知信標(我測試過,工作正常),但不能做廣告。所以我開始使用CoreBluetooth,如上面提到的SO答案中所描述的那樣可以在後臺做廣告。
我的應用在iPhone上的CBCentralManagerDelegate(後臺應用)中調用didDiscoverPeripheral
方法,因此它檢測到了iPad。 CBPeripheralManager在iPhone上的isAdvertising
屬性是true
。但是didDiscoverPeripheral
未在iPad上調用。我有點困惑。其中一種選擇是我的iPad由於某些原因無法檢測到iPhone,或者我的iPhone正在撒謊而不是廣告。
所以我認爲我只是有點愚蠢和谷歌調試「CoreBluetooth調試應用程序」。我發現Vicinity和AltBeacon。而對於這兩款應用程序,行爲都是一樣的!如果您背景(按Home /睡眠按鈕)廣告應用程序,瀏覽應用程序無法再發現它。如果你打開應用程序的背景,它會立即發現它。這兩個應用程序都提到可以與他們一起在後臺播放。
我做錯了什麼;這是行爲預期?我誤解了框架嗎?你能證實這種行爲嗎?
要確認這一點,最快的方法是在兩臺設備上安裝Vicinity(您必須將NSBluetoothPeripheralUsageDescription
鍵添加到Info.plist),將一臺設備設置爲廣播並按主頁按鈕。
好。我向我的廣告客戶添加了一項服務,如'cbPeripheralManager!.add(CBMutableService(type:random cbuuid,primary:true))'。我將這個uuid添加到'scanForPeripheralsWithServices'。因此,蘋果提到的一切都在這裏完成:廣告方面有一個ServiceUUID,我有一個iOS設備明確掃描它。反正不要工作。 – flashspys
如果您安裝了其他在後臺投放廣告的應用,則「溢出區域」中可能沒有足夠的空間。嘗試卸載這些應用程序,因爲它聽起來像你已經嘗試了幾個。 – davidgyoung
我刪除了所有的應用程序並重新安裝了我的開發應用程序。沒有什麼改變 – flashspys