2015-11-17 36 views
5

Ich habe einige Probleme mit einem CBPeripheriegerät, dessen Dienste aktualisiert wurden: Mein physisches Gerät verfügt über eine Schaltfläche, die die Werbedienste aktualisiert, aber meine App liest immer noch die alten Dienste in der Delegatmethode didDiscoverServices. Wenn ich das Peripheriegerät in didDiscoverPeripheral entdecke, kann ich sehen, dass die Dienste dort aktuell sind.iOS CBPeripheriedienste werden nicht aktualisiert

Wenn ich die App erneut ausführen, sind die alten Dienste immer noch da! Es scheint der einzige Weg zu sein, meine App dazu zu bringen, die neuen Dienste zu entdecken, indem ich Bluetooth ein- und ausschalte. Selbst die Deinstallation/Neuinstallation meiner App reicht nicht aus.

Speichert iOS die Dienste für immer? Gibt es eine Möglichkeit, den Cache zurückzusetzen/zu löschen?

Antwort

1

haben Sie diese versucht Wenn Sie die scanForPeripheralsWithServices:options: Methode der CBCentralManager Klasse aufrufen entfernten peripheren ist zu entdecken, die Dienstleistungen sind Werbung, Ihre zentrale Gerät nutzt seine Radio für Werbe-Geräten zu hören, bis Sie es explizit stoppen sagen zu

Ref: Best Practices for Interacting with a Remote Peripheral Device

+0

Sicher Sache. Das ist, was ich tue, indem ich die Dienste übergebe, nach denen ich suche, und 'didDiscoverPeripheral' hat diese Dienste in' advertisementData [CBAdvertisementDataServiceUUIDsKey] '. Aber wenn ich explizit '[self.peripheral discoverServices: nil];' anrufe, ist dieser Dienst nicht mehr da – marcelosalloum

+0

ok ich habe das nicht versucht, aber ich denke [self.peripheral discoverServices: nil]; wird für ein angeschlossenes Peripheriegerät aktualisiert, nicht für ein entdecktes Peripheriegerät. Ich habe es nicht auf ios getestet, aber Änderungen an Werbedaten können nur in Werbepaketen angezeigt werden. korrigiere mich, wenn ich falsch liege – Neo

+1

Neo, dieser Link ist immer toll, danke fürs Teilen. – Hemang

Verwandte Themen