今天在做藍(lán)牙的時(shí)候 發(fā)現(xiàn)報(bào)錯(cuò)XPC connection invalid?
?is not a valid peripheral
而且藍(lán)牙的鏈接狀態(tài)已經(jīng)變成state = disconnected
我在這里范的錯(cuò)誤是 開(kāi)始使用了一個(gè)CBCentralManager? 在調(diào)用某個(gè)命令的時(shí)候 再次創(chuàng)建了一個(gè)CBCentralManager
原理是這樣的:我同時(shí)有兩個(gè)CBCentralManager,和兩個(gè)藍(lán)牙設(shè)備藏斩,一開(kāi)始是這樣的
A連接上了仿滔,并且用第一個(gè)CBCentralManger可以發(fā)送數(shù)據(jù)給它,B沒(méi)有連接上指蚁。這時(shí)候驾凶,我就需要第二個(gè)CBCentralManager重新掃描附近的設(shè)備(包括手機(jī)已經(jīng)連接上的設(shè)備浊洞,包括A)來(lái)連接B
在這個(gè)過(guò)程中藻丢,第二個(gè)CBCentralManager會(huì)連接上A(因?yàn)锳是手機(jī)已經(jīng)連接上的設(shè)備,我需要連接上A,然后讀取"2A23"特征值來(lái)獲取它的mac地址杨帽,然后判斷它是不是B)漓穿,導(dǎo)致A和第一個(gè)CBCentralManager之間的連接斷開(kāi)(CBPeripheral.state 變?yōu)閐isconnected).從而導(dǎo)致第一個(gè)CBCentralManager給A發(fā)送數(shù)據(jù)永遠(yuǎn)不會(huì)成功了。(坑的是注盈,即使CBPeripheral.state已經(jīng)變?yōu)閐isconnected了晃危,藍(lán)牙的斷開(kāi)連接回調(diào)方法并沒(méi)有調(diào)用)