Перейти к основному содержимому

Обзор поиска устройства

Find API позволяют включить индикацию поиска на подключённом устройстве либо ответить на запрос устройства найти iPhone.

Это противоположные направления с разными API:

ПроцессИнициаторОтветственность приложенияСигнал завершения
Найти устройствоПриложениеЗапустить или остановить предусмотренную прошивкой индикацию через DeviceFindAPI.Completion команды подтверждает принятие. Поддерживаемое устройство позднее может отправить deviceDidReportFound.
Найти iPhoneПодключённое устройствоЗапустить или остановить звук, вибрацию или интерфейс iPhone в ответ на callbacks делегата.После обнаружения iPhone сообщить результат через FindPhoneStateReportingAPI.

Возможности

Реализация с помощью AI

Разработка с AI

Реализуйте этот сценарий с AI

Используйте официальный навык «Реализация поиска AIBuds» и адаптируйте сценарий к приложению.

Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/implement-aibuds-find-workflow. Используйте этот навык, чтобы реализовать «Реализация поиска AIBuds» в данном iOS-проекте и проверить результат.
Открыть официальный навык

Начало работы

Для использования функции поиска:

  1. Подключитесь к устройству — установите рабочее соединение с целевым AIBuds.
  2. Выберите направление — приложение ищет устройство или отвечает на запрос найти iPhone.
  3. Проверьте протокол и возможность — для поиска устройства используйте DeviceFindAPI и убедитесь, что supportsFindDevice == true; для сообщения об обнаружении iPhone используйте FindPhoneStateReportingAPI.
  4. Обрабатывайте правильный итоговый сигнал — принятие команды не подтверждает физическое обнаружение устройства или iPhone.

Основные понятия

Поиск устройства

  • Начать поиск: запросить у подключённого устройства включение индикации поиска.
  • Остановить поиск: запросить выключение этой индикации.
  • Событие обнаружения: deviceDidReportFound(_:) — отдельное итоговое событие устройства, если оно поддерживается.

DeviceFindAPI работает с уже подключённым устройством. Перед отображением элементов управления или отправкой команды проверьте supportsFindDevice. Если устройство не сообщает эту возможность, свойство по умолчанию равно false. API не выполняет Bluetooth-обнаружение или поиск ближайших устройств.

Поиск iPhone

  • deviceDidRequestStartFindingPhone(_:) просит приложение включить собственный сигнал на iPhone.
  • deviceDidRequestStopFindingPhone(_:) просит приложение выключить сигнал.
  • Когда пользователь найдёт iPhone, вызовите notifyPhoneFound(_:), чтобы сообщить результат запросившему устройству.

Протоколы

Команды поиска устройства доступны через DeviceFindAPI:

Swift
guard let device = device as? DeviceFindAPI else {
    print("Device does not support DeviceFindAPI")
    return
}
guard device.supportsFindDevice else {
    print("Connected device does not support find-device commands")
    return
}

Обратный процесс поиска iPhone после запроса устройства использует FindPhoneStateReportingAPI:

Swift
guard let reporter = device as? FindPhoneStateReportingAPI else {
    print("Device cannot receive an iPhone-found report")
    return
}

Рекомендации

  1. Не смешивайте направления: не используйте DeviceFindAPI для сигнала на iPhone.
  2. Проверяйте протокол и возможность: убедитесь в поддержке протокола и проверяйте supportsFindDevice перед отображением элементов поиска устройства.
  3. Отделяйте принятие от результата: успешный completion подтверждает обработку команды, но не физическое обнаружение цели.
  4. Предусмотрите остановку: позвольте пользователю выключить активную индикацию устройства или iPhone.
  5. Обновляйте UI в главной очереди: отправляйте изменения UIKit из callbacks в главную очередь.

Примечания

  • Команды поиска требуют, чтобы целевое устройство оставалось подключённым и доступным.
  • Звук, вибрация и другая индикация устройства определяются прошивкой.
  • Приложение управляет звуком, вибрацией и интерфейсом iPhone для запроса поиска.
  • supportsFindDevice == false может означать отсутствие поддержки либо то, что устройство не сообщило эту возможность.
  • Ни один протокол не предоставляет достоверное свойство активности или длительности.