Upgrade to Pro — share decks privately, control downloads, hide ads and more …

5分で理解するAccessorySetupKit / Understanding Access...

5分で理解するAccessorySetupKit / Understanding AccessorySetupKit in 5 minutes

potatotips #88 iOS/Android開発Tips共有会 で発表したスライドです
https://potatotips.connpass.com/event/320867/

nekowen

July 05, 2024
Tweet

More Decks by nekowen

Other Decks in Programming

Transcript

  1. ASAccessorySession のアクティベート 10 let session = ASAccessorySession() override func viewDidLoad()

    { super.viewDidLoad() session.activate(on: DispatchQueue.main) { [weak self] event in // アクセサリが追加・削除されたり、   // シートの表示・非表示のタイミングなどで呼ばれる } }
  2. ASDiscoveryDescriptor に検出するアドバタイズデータを指定 11 let descriptor = ASDiscoveryDescriptor() // 「どちらか」一つ指定が必要 descriptor.bluetoothCompanyIdentifier

    = ... descriptor.bluetoothNameSubstring = ... // 「どれか」一つ指定が必要 descriptor.bluetoothServiceUUID = .init(string: "...") descriptor.bluetoothManufacturerDataBlob = ... descriptor.bluetoothServiceDataBlob = ...
  3. ASPickerDisplayItem を生成して showPicker を呼び出す 12 let displayItem = ASPickerDisplayItem( name:

    "デバイス名", productImage: UIImage(named: ...), descriptor: descriptor ) // セットアップシートを表示 session.showPicker(for: [displayItem]) { … } https://developer.apple.com/videos/play/wwdc2024/10203
  4. Core Bluetooth にペアリングした機器の情報を引き継ぐ 13 self.session.activate(on: DispatchQueue.main) { [weak self] event

    in switch event.eventType { case .accessoryAdded: pickedAccessory = event.accessory case .pickerDidDismiss: // ペアリングした機器の識別子をCore Bluetooth に引き継ぐ let bluetoothIdentifier = pickedAccessory.bluetoothIdentifier ... } }
  5. Core Bluetooth にペアリングした機器の情報を引き継ぐ 14 self.session.activate(on: DispatchQueue.main) { [weak self] event

    in switch event.eventType { case .accessoryAdded: pickedAccessory = event.accessory case .pickerDidDismiss: // ペアリングした機器の識別子をCore Bluetooth に引き継ぐ let bluetoothIdentifier = pickedAccessory.bluetoothIdentifier ... } }