最近做一個硬件設備,寫IOS相應的數據連接/分析代碼時;發現一個問題,如果是開機,每次都能連接上。連接斷開后,發現再也掃描不到了。通過第三方工具LightBlue,發現信號是-127。
此時進入設置查看藍牙設備,發現該設備處于連接狀態。所以發現不了該設備。
此問題解決方案:搜索前,先通過
retrieveConnectedPeripheralsWithServices
搜索已連接設備,是否存在當前應用需要的設備。存在時,不進行掃描,直接連接設備。
不存在時,進行掃描。
搜索示例代碼:
-(int) Search_RetrieveConnPeri
{NSArray *uuidArray = [NSArray arrayWithObjects:[CBUUID UUIDWithString:DEVICE_INFO_SERVICE],[CBUUID UUIDWithString:DEVICE_BATTER_SERVICE], [CBUUID UUIDWithString:kConnectedServiceUUID1], [CBUUID UUIDWithString:OAT695_SERVICE],nil];NSArray* allConnected=[centralManager retrieveConnectedPeripheralsWithServices:uuidArray];if(allConnected.count>0){for(int i=0;i<allConnected.count;i++){CBPeripheral *per = allConnected[i];NSLog(@"retrie conn names: %@",per.name);if([per.name hasPrefix:KNAME_DEVICE]){[self Connect_Peri:per];return 1;}}//CBPeripheral *per = allConnected[0];}return 0;
}