##Bluetooth Explorerとは?
Appleが提供する開発用ツールに、「Bluetooth Explorer」というものがあります。
Bluetoothにまつわる諸々の解析や設定を行うためのツールで、非常に多くの機能を持っています。
上記のスクリーンショット、全部Bluetooth Explorerのウィンドウです。MBP 15 Retina の最高解像度設定で画面が埋まる程度にツールを立ち上げてみましたが、他にもまだまだ多くの機能があります。。
##BLE と Bluetooth Explorer
機能がありすぎて今日まで気付かなかったのですが、BLE向けの機能も持っています。
Bluetooth Low Energy のデバイスをスキャン、接続し、提供するサービス/キャラクタリスティックを確認 することができます。
##何が嬉しいのか?
・・・とここまで書いたところで、これの何が嬉しいの? iOSアプリの「LightBlue」とか「BLExplr」でいいんじゃないの?? という声が聞こえてきそうですが、いくつかiOS×BLEに関わるエンジニアにとって嬉しい点があります。
###ANCSのサービス・キャラクタリスティックが見える
ひとつは、ANCS (Apple Notification Center Service) のサービス・キャラクタリスティックも見える という点です。
ANCSについてはまた別途記事を書こうと思いますが(というかそもそもそれを書こうとする中でこの記事が派生して生まれたわけですが)、iOSからの電話着信やメール受信などの通知を外部デバイスで受け取るためのサービスです。
で、この ANCS、iOS自体が提供するサービスなので、iOSデバイスはサービス利用側にはなれません(※1)。したがって、 別のiOSデバイスからスキャンして接続しても、ANCSサービスは見つからないようになっています。
そんなわけで、iPhone に インストールした LightBlue や BLExplr からはこのサービスは見えないので(※2)、そこに Bluetooth Explorer を使って見てみると、「おーANCSほんとにあった!」となって嬉しい、ぐらいのメリットがあります。
- ※1: ただし、iOS 6 は ANCS の利用側にもなれたとのこと
- ※2: LightBlue の Mac 版では見えます。Android端末とかでも試してませんが当然見えるかと。
####ANCSの参考記事
###アドバタイズメントデータの中身の確認が捗る
iOS の Core Bluetooth では、実際に受信されているアドバタイズメントデータの中身を全部 didDiscoverPeripheral〜 の引数に渡してくれるわけではありません。
たとえば iBeacon の UUID や Major / Minor は、AD Type FF
(Manufacturer のカスタム AD Type を示す)の AD Structure に格納されますが、
1A # Number of bytes that follow in second (and last) AD structure
FF # Manufacturer specific data AD type
4C 00 # Company identifier code (0x004C == Apple)
02 # Byte 0 of iBeacon advertisement indicator
15 # Byte 1 of iBeacon advertisement indicator
e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 # iBeacon proximity uuid
00 00 # major
00 00 # minor
c5 # The 2's complement of the calibrated Tx Power
(http://stackoverflow.com/questions/18906988/what-is-the-ibeacon-bluetooth-profile)
iOS の Core Bluetooth でスキャンした場合、当該ビーコンのアドバタイズを受信しても、肝心の上記の Manufacturer Data が didDiscoverPeripheral〜 の引数には入ってこないため、Core Bluetooth を用いて直接これらの情報を取得し取り扱う、ということができません。
一方、Bluetooth Explorer を用いると、アドバタイズメントデータの内容が左下のビューに表示され、iBeacon の UUID 等も確認することができます。
ちなみにこれは UI 設計の問題で iOS や Core Bluetooth の制約によるものではありませんが、iOS の LightBlue ではアドバタイズメントデータの中身を見るためにはいったん接続を確立しないといけない (接続確立後の詳細画面で表示するUIになっている)、という点を鑑みても、Bluetooth Explorer の方がアドバタイズメントデータの中身を確認するという用途には便利です。
##Bluetooth Explorer インストール方法
Xcode のメニューの、
[Xcode] > [Open Developer Tool] > [More Developer Tools...]
を選択するとブラウザが起動し、Apple の開発用ツールのダウンロードページが開きます。
で、そこから「Hardware IO Tools」をダウンロードすると、その中に Bluetooth Explorer.app が含まれています。
##Low Energy Devices ウィンドウの起動方法
Bluetooth Explorer のメニューの、
[Devices] > [Low Energy Devices]
で起動します。
##(2015.3.23 追記)
konashi開発者の松村礼央さんと、iOSエンジニアの堤(私)とで、iOS × BLE の技術書を執筆させていただきました。
ソシム
売り上げランキング: 898
BLEを使ったiOSアプリ開発についてゼロから学べて、実案件レベルにも使える全480ページの大ボリューム本となっております。どうぞよろしくお願いします。