[iPhone] Bluetooth Scan 検索を取得

iPhoneとBluetoothデバイスをScanするところをできるだけ簡単にやってみました。

Swift 5.1
Xcode 11.4

 

CoreBluetooth

 
Bluetooth といえば以前は消費電力が大きく、バッテリー消費の最適化として真っ先に停止されていたのですが Bluetooth version 4.0から低消費電力仕様となりBLEと通称されています。ただBluetooth Classicとは互換性がないので両方の機能を別に持つ必要があり面倒ではあります。

既にBLEから10年以上が経過しているのでClassicのことは忘れましょう(忘れたい)

iOSでBluetoothを扱うには Core Bluetooth を使います。
こちらのドキュメントがAppleから出ています。
Core Bluetooth Programming Guide あわせてこちらも参考にしました。
Transferring Data Between Bluetooth Low Energy Devices

 

 

用語

 
ここで使う使うBLEの主だった用語について

Central と Peripheral:
ネットワークのクライアント・サーバーの役割

Advertising:
Peripheralが名前や主要なサービス機能などの情報を周囲に発信する。その情報をいれたパケットが Advertising Packet でCentralで受け取る

UUID:
重複しない一意のIDで、サービスなどの個別機能を特定できます

Peripheral UUID
Service UUID
Characteristic UUID

  • Peripheral
    • Service1
      • Characteristic1
      • Characteristic2
    • Service2
    • Service3
 

設定

 
最初に、info.plistに以下の記述をしてユーザーの許可をとるようにします。
NSBluetoothAlwaysUsageDescription
NSBluetoothPeripheralUsageDescription

info.plist


コーディングはこのような流れになります

  • CentralManager 初期化
  • CentralManager のstatus確認
  • 検索開始
  • Peripheral探索結果を受信
  • 検索終了
 

サンプルコード

 
わかりやすく簡略化して、scanで周囲のPeripheralを探してみます。

ViewController.swift


 

これで起動後にBluetoothがオンになっていればログが取れます。


 

デバイスのBluetooth設定がオフの場合、初期化でoptionを使うと設定画面に誘導してくれます。


 
 

References:
Core Bluetooth | Apple Developer Documentation
Core Bluetooth Programming Guide – Apple Developer
Transferring Data Between Bluetooth Low Energy Devices
BLE Docs


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする