-
Notifications
You must be signed in to change notification settings - Fork 195
Description
Initially the Web Bluetooth specification has required requestDevice options to filter the set of devices that will be displayed for the user to select from. One argument against allowing developers to request all devices be shown is that out of laziness they may often do so to the detriment of the user's experience.
When devices do not advertise their services and do not have a reliable name that can be used as a filter then there is no way to select devices.
One concrete example is this Bluetooth Rename Tool I made recently (link will break eventually, maybe it will appear on demos page eventually). This tool uses generic_access
's gap.device_name
, however generic_access
is prohibited from being advertized. It is unknown what device names may be already that the user wishes to edit.
I believe other developers will eventually encounter this for devices that don't advertise services and have a multitude of names. Though this should be a small fraction of use.
This demo currently works in Chrome due to a bug allowing a filter of name: ""
to return all devices. That isn't the right way to solve this. I'm not clear on how it should be solved, but would like to communicate to developers that they should only ask for all devices when they really need to. Only half jokingly:
navigator.bluetooth.requestDevice({
filters: [{
'listAllDevicesEvenThoughItIsAPoorUserExperience': true
}],
optionalServices: ['generic_access']
})