Обзор поиска устройства
Find API позволяют включить индикацию поиска на подключённом устройстве либо ответить на запрос устройства найти iPhone.
Это противоположные направления с разными API:
| Процесс | Инициатор | Ответственность приложения | Сигнал завершения |
|---|---|---|---|
| Найти устройство | Приложение | Запустить или остановить предусмотренную прошивкой индикацию через DeviceFindAPI. | Completion команды подтверждает принятие. Поддерживаемое устройство позднее может отправить deviceDidReportFound. |
| Найти iPhone | Подключённое устройство | Запустить или остановить звук, вибрацию или интерфейс iPhone в ответ на callbacks делегата. | После обнаружения iPhone сообщить результат через FindPhoneStateReportingAPI. |
Возможности
Поиск устройства
Запуск индикации поиска на подключённом устройстве AIBuds
Остановка поиска устройства
Остановка индикации поиска на подключённом устройстве AIBuds
Сообщение о найденном iPhone
Сообщение устройству о завершении инициированного им поиска iPhone
Реализация с помощью AI
Реализуйте этот сценарий с AI
Используйте официальный навык «Реализация поиска AIBuds» и адаптируйте сценарий к приложению.
Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/implement-aibuds-find-workflow. Используйте этот навык, чтобы реализовать «Реализация поиска AIBuds» в данном iOS-проекте и проверить результат.Начало работы
Для использования функции поиска:
- Подключитесь к устройству — установите рабочее соединение с целевым AIBuds.
- Выберите направление — приложение ищет устройство или отвечает на запрос найти iPhone.
- Проверьте протокол и возможность — для поиска устройства используйте
DeviceFindAPIи убедитесь, чтоsupportsFindDevice == true; для сообщения об обнаружении iPhone используйтеFindPhoneStateReportingAPI. - Обрабатывайте правильный итоговый сигнал — принятие команды не подтверждает физическое обнаружение устройства или iPhone.
Основные понятия
Поиск устройства
- Начать поиск: запросить у подключённого устройства включение индикации поиска.
- Остановить поиск: запросить выключение этой индикации.
- Событие обнаружения:
deviceDidReportFound(_:)— отдельное итоговое событие устройства, если оно поддерживается.
DeviceFindAPI работает с уже подключённым устройством. Перед отображением элементов управления или отправкой команды проверьте supportsFindDevice. Если устройство не сообщает эту возможность, свойство по умолчанию равно false. API не выполняет Bluetooth-обнаружение или поиск ближайших устройств.
Поиск iPhone
deviceDidRequestStartFindingPhone(_:)просит приложение включить собственный сигнал на iPhone.deviceDidRequestStopFindingPhone(_:)просит приложение выключить сигнал.- Когда пользователь найдёт iPhone, вызовите
notifyPhoneFound(_:), чтобы сообщить результат запросившему устройству.
Протоколы
Команды поиска устройства доступны через DeviceFindAPI:
- Swift
- Objective-C
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
}id<AIBudsDeviceFindAPI> device = (id<AIBudsDeviceFindAPI>)self.device;
if (![device conformsToProtocol:@protocol(AIBudsDeviceFindAPI)]) {
NSLog(@"Device does not support AIBudsDeviceFindAPI");
return;
}
if (!device.supportsFindDevice) {
NSLog(@"Connected device does not support find-device commands");
return;
}Обратный процесс поиска iPhone после запроса устройства использует FindPhoneStateReportingAPI:
- Swift
- Objective-C
guard let reporter = device as? FindPhoneStateReportingAPI else {
print("Device cannot receive an iPhone-found report")
return
}id<AIBudsFindPhoneStateReportingAPI> reporter =
(id<AIBudsFindPhoneStateReportingAPI>)self.device;
if (![reporter conformsToProtocol:@protocol(AIBudsFindPhoneStateReportingAPI)]) {
NSLog(@"Device cannot receive an iPhone-found report");
return;
}Рекомендации
- Не смешивайте направления: не используйте
DeviceFindAPIдля сигнала на iPhone. - Проверяйте протокол и возможность: убедитесь в поддержке протокола и проверяйте
supportsFindDeviceперед отображением элементов поиска устройства. - Отделяйте принятие от результата: успешный completion подтверждает обработку команды, но не физическое обнаружение цели.
- Предусмотрите остановку: позвольте пользователю выключить активную индикацию устройства или iPhone.
- Обновляйте UI в главной очереди: отправляйте изменения UIKit из callbacks в главную очередь.
Примечания
- Команды поиска требуют, чтобы целевое устройство оставалось подключённым и доступным.
- Звук, вибрация и другая индикация устройства определяются прошивкой.
- Приложение управляет звуком, вибрацией и интерфейсом iPhone для запроса поиска.
supportsFindDevice == falseможет означать отсутствие поддержки либо то, что устройство не сообщило эту возможность.- Ни один протокол не предоставляет достоверное свойство активности или длительности.