【Swift UI】Core BluetoothでUUIDの定義方法!CBUUID型と自動生成
この記事からわかること
- Swift UIでCore BluetoothでBluetooth接続アプリの実装方法
- UUIDとは?
- 適当な値を自動生成するには?
- CBUUIDクラスでインスタンス化するには?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
今回はiOSアプリでBluetooth機能を実装するためにCore Bluetoothを使用してUUIDの定義方法をまとめていきます。
Core Bluetoothとは?
Core BluetoothはアプリからBLE(Bluetooth Low Energy)を使用するための機能を提供するライブラリです。デフォルトで組み込まれているので導入作業は必要なくすぐに使用することができます。
Bluetooth接続を用いる場合は例えばPCとキーボードなど接続しあう2つの登場人物が必要になります。2つのうちBluetoothの機能を使用する親側を「Central(セントラル)」、機能を提供する子側を「Peripheral(ペリフェラル)」と呼びます。例で言うとPCがセントラル、キーボードがペリフェラルです。
そしてペリフェラルが持っている機能のまとまりをサービス、機能1つ1つをキャラクタリスティックと呼びそれらを識別するための識別子とUUIDが振られています。
UUIDとは?
UUID(Universally Unique IDentifier)とはSwift独自のものではなくな識別子の標準規格です。重複のない一意な識別子を定義するために使用されることが多く、データベースの主キーやデバイスなどの識別子に利用されます。
128bit(=16byte)の数値として表現され、8-4-4-4-12
のハイフン区切りの文字(16進数:0〜F)の羅列として表されます。
8ABE0F22-0EEF-478E-A709-3F271B932AFE
SwiftではUUID
オブジェクトが用意されていますが、Core Bluetoothでは独自のCBUUID
オブジェクトを使用します。
適当なUUIDを生成する
とりあえず適当なUUIDが欲しい場合はターミナルでuuidgen
コマンドを実行すると適当なUUIDを自動生成してくれます。
$ uuidgen
94B7A9F8-4D60-43E8-AA7D-22CE38473C4A
CBUUIDクラス
CBUUIDクラスはCore Bluetoothで定義されているBluetooth規格で使用するための識別子を提供するクラスです。
CBUUIDインスタンスの生成
CBUUIDインスタンスを生成するにはCBUUID(string:)
イニシャライザを使用して簡単に実装できます。
CBUUID(string:"00000000-1111-1111-1111-111111111111")
引数に渡すのはハイフン区切りの8-4-4-4-12の文字列です。UUIDは規格に厳格なのでもしフォーマットが異なる場合は以下のようなエラーを吐いてアプリがクラッシュします。
"String 00000000-0000-1111-1111-11111111 does not represent a valid UUID"
String型に変換する
uuidString
プロパティからString
型に変換した文字列を取得することも可能です。
let cbuuid = CBUUID(string:"00000000-0000-1111-1111-111111111111")
cbuuid.uuidString
UUID型から変換する
UUID
型からキャストすることも可能です。
let uuid = UUID(uuidString:"00000000-0000-1111-1111-111111111111")
let cbuuid = CBUUID(nsuuid: uuid!)
おすすめ参考書:iOS×BLE Core Bluetoothプログラミング
iOSアプリでBLEを使用した機能を実装したいなら一度は読んでおくことをおすすめする参考書です。iOSでのCore Bluetoothを使用した実装だけでなく、Bluetoothに関する細かい知識やノウハウも詰まっているので網羅的に理解したい方にはバッチリだと思います。
少し古い参考書であり、Objective-CとSwift両方のコードで実装方法が記述されています。Swift UIでの実装方法は載っていませんが、基本的なコードは昔からあまり変わっていないのでつまづくところはなく実装できると思います。
BLEを食材や店員などに例えて解説してくれるので素人でもBLEの概念がつかみやすく記述されています。約500ページくらいあるのでボリュームがすごいですが、ここから得られる知識は数知れませんでした。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。