Ich arbeite an einer iPhone und Mac OS X Anwendung, mit der Sie Ihren Mac über die Nähe sperren und entsperren können. Wenn die Signalstärke unter einem bestimmten Schwellenwert liegt oder die Verbindung verloren geht, wird der Mac gesperrt.CoreBluetooth - iPhone Werbung im Hintergrundmodus
Ich arbeite mit Apple CoreBluetooth Framework für BTLE, mit dem iPhone als Peripheriegerät und den Mac als zentrale. So weit, ist es gut. Es funktioniert auch sehr gut, aber wenn ich die App zum Hintergrund auf dem iPhone schicke, scheint sich die Werbung zu ändern. Das iPhone bewirbt sich immer noch, aber ohne das Dienstprofil und die Eigenschaften, die ich in der App verwende. Obwohl dies kein Problem ist, wenn das iPhone immer noch in Reichweite des Mac ist, weil es immer noch verbunden ist und die Eigenschaften nicht in der Mitte verwendet werden, wird es ein Problem, nachdem das iPhone aus dem Bereich verschoben wurde. Wie erwartet, sperrt der Mac und beginnt zu entdecken, das iPhone wieder zu verbinden und entsperren, wenn erfolgreich.
Bei dieser Ermittlung verwende ich jedoch das angegebene Serviceprofil und die Merkmale, um nur Geräte zu erhalten, auf denen meine App ausgeführt wird, und um die zum Entsperren zu identifizieren.
Ich probierte einen Workaround, indem ich ohne ein Dienstprofil entdeckte und das richtige Gerät über seine UUID identifizierte, die ich speicherte, als ich begann, dieses iPhone zum Sperren und Entsperren zu verwenden. Diese Problemumgehung funktioniert auch in einem kleinen Umfang, denn wenn ich Bluetooth auf dem iPhone ausschalte und wieder einschalte, erhält es eine andere UUID. Das ist eine Einschränkung, mit der ich leben könnte, aber es ändert auch die UUID nach ein paar Stunden und dann funktioniert das Entsperren nicht.
Vielleicht hat schon jemand an einer solchen App gearbeitet und weiß, wie man ein solches Problem beheben kann? Oder kennen Sie einen statischen Wert, mit dem ich das Gerät identifizieren kann?