1. 程式人生 > >iOS BLE 關於app連線已配對裝置的問題

iOS BLE 關於app連線已配對裝置的問題

之前在做專案的時候遇到這個問題,我的裝置是支援ANCS協議的,但是每次配對後系統就會自動和我的裝置連線,我無法搜尋到這個裝置,通過 retrieveConnectedPeripheralsWithServices:這方法可以找到已經被連線上的所有裝置,但是我想利用 connectPeripheral:options對找到的裝置進行連線,但是不成功,糾結了好久終於給我發現問題,在已經搜尋到系統已連線上的裝置後,不應該繼續走裝置搜尋的方法了,所以connectPeripheral:options對找到的裝置進行連線和scanForPeripheralsWithServices 應該是兩個分支,程式碼如下:

-(void)scanDevices:(blackscanPeriperalInfos)blackPeriperalInfos;

{

//zwl

//已經被系統或者其他APP連線上的裝置陣列

NSArray *arr = [self.CBcentralmagagerretrieveConnectedPeripheralsWithServices:@[[CBUUIDUUIDWithString:ServiceUUID]]];

    if(arr.count>0)

    {

     for (CBPeripheral* peripheralin arr)

     {

             if

(peripheral != nil)

             {

                 peripheral.delegate = self;

//manager 獲取到的Peripheral會自動釋放,要重新建立一個Peripheral物件等於獲取到的Peripheral,之前專案中有這個,寫部落格的時候少了這句,導致好多朋友反應這個方法實現不了,後邊一位朋友跟我聊得時候發現少了這句,現在補上

                self.peripheral = peripheral;

                [centralManagerconnectPeripheral

:self.peripheraloptions:nil];

             }

     }

    }

    else

    {

        [self.CBcentralmagagerscanForPeripheralsWithServices:niloptions:nil];

    }

}