Signatur
Beschreibung
Die Methode getAvailability() gehört zur Schnittstelle Bluetooth, die über navigator.bluetooth erreichbar ist. Sie gibt ein Promise zurück. Dieses wird nominal mit true erfüllt, wenn das System einen Bluetooth-Adapter hat und der Browser ihn verwenden kann. Andernfalls wird es mit false erfüllt.
„Nominal“ bedeutet: Der Wert ist nur ein Hinweis und keine Garantie. true heißt nicht, dass der Adapter eingeschaltet ist oder dass requestDevice() klappt. Umgekehrt darf ein Browser aus Datenschutzgründen immer false melden, zum Beispiel wenn der Nutzer Web Bluetooth abgeschaltet hat. So wird kein Fingerprinting über die Hardware möglich.
Nutzen Sie die Methode für eine progressive Oberfläche: Blenden Sie den Button „Gerät verbinden“ nur ein, wenn Bluetooth voraussichtlich verfügbar ist. Oder zeigen Sie einen Hinweis, dass ein Adapter fehlt. Wird ein Adapter später angeschlossen oder entfernt, meldet das Ereignis availabilitychanged die Änderung.
Rückgabewert
true erfüllt wird, wenn Bluetooth voraussichtlich verfügbar ist, und sonst mit false. Normalerweise wird es nicht abgelehnt.Beispiele
Einfache Verfügbarkeitsprüfung
const checkBluetooth = async () => {
// Zuerst prüfen, ob der Browser die API überhaupt kennt
if (!('bluetooth' in navigator)) {
console.log('Web Bluetooth wird nicht unterstützt.');
return false;
}
const available = await navigator.bluetooth.getAvailability();
console.log(available ? 'Bluetooth ist verfügbar.' : 'Kein Bluetooth-Adapter gefunden.');
return available;
};
checkBluetooth();
Verbinden-Button nur bei verfügbarem Bluetooth anzeigen
const connectBtn = document.querySelector('#connect');
const hint = document.querySelector('#bt-hint');
const updateUi = (available) => {
connectBtn.hidden = !available;
hint.textContent = available ? '' : 'Bitte einen Bluetooth-Adapter anschließen oder aktivieren.';
};
const init = async () => {
if (!navigator.bluetooth) {
updateUi(false);
return;
}
updateUi(await navigator.bluetooth.getAvailability());
// Auf Änderungen reagieren, etwa beim Ein- oder Ausstecken eines USB-Dongles
navigator.bluetooth.addEventListener('availabilitychanged', (event) => {
updateUi(event.value);
});
};
init();
Verfügbarkeit prüfen, dann Gerät anfordern
connectBtn.addEventListener('click', async () => {
if (!(await navigator.bluetooth.getAvailability())) {
alert('Bluetooth ist nicht verfügbar.');
return;
}
try {
const device = await navigator.bluetooth.requestDevice({
filters: [{ services: ['heart_rate'] }]
});
console.log('Ausgewählt:', device.name);
} catch (err) {
// z. B. NotFoundError, wenn der Nutzer den Auswahldialog abbricht
console.error(err.name, err.message);
}
});
// Wichtig · Fallstricke
- Nur ein Hinweis: Auch bei
truekann der Adapter ausgeschaltet sein, undrequestDevice()kann trotzdem scheitern. Fangen Sie Fehler immer ab. - Datenschutz: Browser dürfen immer
falseliefern, etwa wenn Web Bluetooth per Richtlinie oder Einstellung gesperrt ist. Verlassen Sie sich nicht auf den Wert zur Hardware-Erkennung. - Kompatibilität: Die Methode ist experimentell. Es gibt sie nur in Chromium-Browsern (Chrome, Edge, Opera), nicht in Firefox und Safari (auch nicht in iOS-Browsern). Prüfen Sie vorher immer
'bluetooth' in navigator. - Sicherer Kontext: Die Methode funktioniert nur über HTTPS oder
localhost. In Iframes ist sie nur erlaubt, wenn die Permissions Policybluetoothsie zulässt. - Unter Linux muss Web Bluetooth in manchen Chrome-Versionen erst über
chrome://flagsaktiviert werden.