0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Swift・CoreBluetoothで通信を行いメッセージアプリっぽいのを作った3

Posted at

第3回の内容

ここ2週間ほど仕事の引き継ぎや新しい仕事になったりと、忙しく3回目の投稿ができてませんでした....
本当に申し訳ないです。今日から投稿を再開していきます。
今回は接続したBLEデバイスのサービス・キャラスタリスティックを検索するを実装していきます。

セントラル、ペリフェラル、サービス、キャラクタリスティックとは?

ここから4つの聴き慣れないBLE固有の概念が出てくるので軽く説明します

  • セントラル
  • BLE通信において、スキャン接続などを行う側のデバイス
  • ペリフェラル
  • BLEの通信において、スキャンで発見される側のデバイスを指します。1つ以上のサービスを提供します
  • サービス
  • 1つ以上の「キャラクタリスティック」を持ちます
  • キャラクタリスティック
  • データを保持します

実装方法

実装の流れ
1.ペリフェラルの持っているサービス一覧を取得
2.サービスの持っているキャラクタリスティック一覧を取得

// ペリフェラルへの接続が成功すると呼ばれる
    func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
        
        print("接続成功!")
        print("接続したデバイス: \(self.peripheral)")
        self.centralManager.stopScan()
        // サービス検索結果を受け取るためにデリゲートをセット
        self.peripheral.delegate = self
        // サービス検索開始
        self.peripheral.discoverServices(nil)
    }

    // サービス発見時に呼ばれる
    func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
        let services: NSArray = peripheral.services as! NSArray
        print("\(services.count)個のサービスを発見! \(services)")
        
        for obj in services{
            if let service = obj as? CBService{
                // キャラクタリスティック検索開始
                peripheral.discoverCharacteristics(nil, for: service)
            }
        }
    }

// キャラクタリスティック発見時に呼ばれる
    func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
        
        let characteristics: NSArray = service.characteristics as! NSArray
        print("\(characteristics.count)個のキャラクタリスティックを発見! \(characteristics)")
    }

処理の流れとしては以上になります。処理を記述した際にCBPeripheralDelegate、CBCentralManagerDelegateが必要になるので、忘れないように注意してください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?