Web Bluetooth를 실전 투입하면 의외로 사용할 수 있는 메모

평상시는 IoT인 제품 개발을 메인으로 하고 있기 때문에, JS도 왕도의 대각선 옆 정도의 사용법으로 즐기고 있는 오늘 요즈음. 그런 가운데, 좀처럼 만질 기회가 없을 것이다Web Bluetooth 를 골고루 괴롭히고 쓰러뜨려 실전 투입하면 의외로 사용할 수 있었으므로, 그 때에 알았던 것의 메모를 정리해 둡니다. 안드로이드 크롬이 지원 환경이었기 때문에, 그쪽으로 정리의 정리가 됩니다.

좀처럼 튜토리얼 이상의 자료가 인터넷에 없었기 때문에, 다른 같은 심경 쪽이 나왔을 때의 도움이 되면...

Web Bluetooth의 사양이나 참고로 한 곳


  • W3C Document
  • GitHub: WebBluetoothCG / web-bluetooth
  • GitHub: WebBluetoothCG / Demos

  • 문서는 의외와 갱신 빈도 높기 때문에, 구현 시기에 따라서는 의외로 할 수 없었던 일이 생기기도 합니다.

    대응 브라우저


  • Chrome
  • Mac
  • Windows
  • 필수 플래그 설정 chrome://flags/#enable-experimental-web-platform-features

  • Android




  • ※2018/09/06 현재

  • Can I use
  • Implementation Status

  • Windows는 플래그가 필요하거나 지원 상황이 좋지 않기 때문에, 개발하는 앱의 지원 환경에서는 제외하고 싶다. Android Chrome은 Mac Chrome과 지원 상황이 변하지 않기 때문에 의외로 사용할 수있었습니다.

    웹 블루투스가 움직이는 조건


  • HTTPS 환경에서만 실행 가능
  • 사용자 액션 (클릭, 키보드 조작 등)을 트리거로 실행
  • Service Worker를 사용한 오프라인 시작도

  • 실전 투입해 알게 된 Web Bluetooth의 버릇



    Advertising은 현재 지원되지 않음(2018/09/06 현재)



    Android나 iOS의 네이티브 앱이라면, Scan시에 Advertising으로 데이터를 보는 일도 있다고 생각합니다만, Web Bluetooth에는 지금 곳곳 서포트되어 있지 않기 때문에 요주의.

    readValue 와 startNotification 를 복수 실행하고 싶을 때 동시에 실행할 수 없다



    앱을 시작할 때 여러 Characteristic에 대해 readValue 또는 startNotification에서 데이터를 빨아들이게 되지만, 같은 타이밍에 여러 개를 실행하면 Android Chrome에서 오류를 토했다 (Mac에서는 문제 없었다). 단말기의 사양이 영향을 받고 있습니까? 라고 추측... 아무래도 복수개를 실행할 필요가 있는 경우, Stack에 모아 1개씩 실행하는 처리를 자전으로 실장할 필요가 있다.

    Android Chrome에서 설정할 수 있는 Notification은 15개까지



    웹 블루투스 문제가 아니라 Android OS 버전에 따라 다릅니다 (Android 4.4는 7 개, 8.0은 15 개). 많은 데이터의 교환이 필요한 경우(BLE로 거기까지 보내지 말고. 셀 수는 없지만 Mac에서는 15 개 이상도 문제없이 설정할 수 있었다).
  • 참고 자료: BLE 시점에서 정리하는 Android OS의 차이

  • Android 기기에 따라 전송 속도가 전혀 다릅니다.



    개발은 수중의 Xperia로 진행하고 있었기 때문에 전송 속도도 특히 신경쓰지 않고 하고 있었습니다만, 검증 단말에서 사용한 해외제의 Android라면 슬퍼질 정도로 극늦게... 단말도 어느 정도 짜내는 편이야 안녕.

    네이티브 앱과 비교하면 할 수있는 한계가 있지만 JS에서도 의외로 좋았습니다.



    「그런 네이티브로 하면~ 좋잖아」라고 말할 것 같아 하지만, 스토어에의 신청의 귀찮음이나 갱신의 빈도, 유저의 단말에의 도입의 용이함으로 생각하면 의외로 있을까라고 생각했습니다 했다. Service Worker의 오프라인 기동이나 Application Manifest를 사용해 네이티브 앱처럼 보이는 것도 있을까(그 근처도 실전 투입했기 때문에 어딘가의 타이밍에 정리합니다).

    웹 블루투스로 더 많은 것을 만들고 싶다

    좋은 웹페이지 즐겨찾기