2014-11-03 64 views
1

我有一個iOS應用程序可以掃描BLE外圍設備,其中可能有很多,並允許用戶決定是否連接到設備。一旦連接,用戶也可以決定斷開連接。所有這些工作正常。如何掃描相同的BLE設備兩次?

我還想添加一個選項,以允許用戶改變主意並重新掃描設備,但這似乎是有問題的。最明顯的做法似乎是停止掃描並重新啓動它,如下所示:

[centralManager stopScan]; 

    CBUUID *myServiceUUID = [CBUUID UUIDWithString: SERVICE_MYSERVICE]; 
    NSArray *services = [[NSArray alloc] initWithObjects: myServiceUUID, nil]; 
    [centralManager scanForPeripheralsWithServices: services options: nil]; 

這不起作用。

最終,iOS決定告訴我的應用設備再次投放廣告,但這需要幾分鐘的時間。

我該如何說服iOS在不等幾分鐘的情況下再次告訴我關於外設的信息?

+0

你試過關閉你的'centralManager'並創建一個新的? – 2014-11-03 18:53:49

+0

@IanMacDonald與這樣的經理混爲一談通常是一個壞主意。 CBCentralManagerScanOptionAllowDuplicatesKey將在前臺工作。或者,您可以嘗試異步重新啓動掃描,並在「dispatch_async」調用中嵌入停止和啓動。 – allprog 2014-11-04 06:54:17

回答

0

當您初始化CBCentralManager時,您可以啓用CBCentralManagerScanOptionAllowDuplicatesKey選項。當你的應用處於前臺時,你會得到不斷的回調,但是,你需要記住當應用在後臺時CBCentralManagerScanOptionAllowDuplicatesKey被禁用。此外,掃描間隔被調節到其前景對應物的〜60分之一。