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

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

Возможности AIBuds охватывают команды Bluetooth, процессы через Wi-Fi-точку доступа устройства, AI-сервисы, обработку медиа и необязательные диагностические модули. Надёжная интеграция явно учитывает эти границы, а не рассматривает каждый вызов SDK как отдельный запрос.

Чётко разделяйте модули

  • AIBudsFoundation содержит общие модели, возможности и типы значений.
  • AIBuds отвечает за обнаружение, подключение и протоколы функций устройства.
  • AI-модули управляют конфигурацией поставщиков и жизненным циклом AI-сессий.
  • Logging, AI Dashboard, Live Streaming, Crash Reporter и Video Stabilization — необязательные служебные или медиамодули.
  • AIBudsAllInOne подходит продуктам, осознанно использующим полный набор; при модульной интеграции подключайте только нужное.

Храните политику продукта вне слоя SDK. Контроллеры интерфейса должны поручать работу координатору, который сохраняет активное устройство, callbacks, плеер, импортёр или AI-сессию до завершения.

Назначьте одного владельца SDK

Инициализируйте выбранные модули один раз за жизненный цикл приложения и храните конфигурацию, делегаты, выбор поставщика и регистрацию плагинов в одном месте. Единственным источником правил инициализации должен быть раздел «Настройка», а не отдельные страницы функций.

Проверяйте готовность и возможности

Подключённое устройство может поддерживать не все функции. Перед операцией:

  1. Убедитесь, что нужное устройство всё ещё активно и готово.
  2. Проверьте соответствие протоколу функции, например DeviceInfoAPI или LiveStreamingAPI.
  3. Проверьте свойство возможности функции, если оно существует.
  4. Показывайте недоступность функции, не используя ошибку команды как способ определения поддержки.

Повторяйте проверки после переподключения или смены устройства. Не кэшируйте возможности как общие настройки учётной записи.

Отделяйте принятие команды от завершения

Многие callbacks сообщают лишь об одном этапе длительной операции. Запуск OTA, переход в режим устройства, получение RTSP-адреса и завершение загрузки медиа — разные вехи.

TEXT
idle -> preparing -> active/progress -> finishing -> completed | failed | cancelled

Итог определяйте только по документированному завершающему callback. Успешный запуск, прогресс 100% или промежуточный URL не означают сквозной успех. Это особенно важно для OTA, OTA камеры, импорта медиа, трансляций, AI-записи, синхронного перевода и функций с явным запуском/остановкой.

Делайте очистку идемпотентной

У каждого длительного процесса должен быть один владелец и один безопасный путь очистки после успеха, ошибки, отмены, ухода с экрана, отключения или перехода в фон. Обычно очистка включает:

  • остановку сессии устройства, если это поддерживается;
  • остановку и освобождение локального плеера, стримера, рекордера или процессора;
  • отмену подписок и удаление наблюдателей;
  • отмену отложенных обновлений интерфейса;
  • очистку callbacks и временных файлов;
  • восстановление интерфейса по итоговому результату.

Исчезновение экрана не означает, что middleware или устройство остановили работу.

Не полагайтесь на очередь callback

Если API явно не гарантирует очередь, отправляйте обновления UIKit в главную очередь, а декодирование, файловый ввод-вывод, разбор и тяжёлые операции выполняйте вне неё. Не блокируйте callback SDK синхронным ожиданием другого callback.

Учитывайте смену сети

Импорт медиа, OTA камеры и RTSP-трансляция могут подключаться к точке доступа устройства. Интернет-маршрут iPhone при этом меняется, а потеря точки доступа не зависит от Bluetooth. Показывайте текущий этап, сохраняйте первую полезную ошибку и перезапускайте процесс только с документированной безопасной границы.

Осознанно работайте с чувствительными данными

Распознанный текст, записи, переводы, отчёты, журналы, отчёты о сбоях, медиа и страницы панели могут содержать данные пользователя.

  • Определите правила хранения и удаления.
  • Ограничьте диагностику предназначенными для неё сборками и сетями.
  • Удаляйте учётные данные и идентификаторы из журналов.
  • Запрашивайте только разрешения, необходимые включённым функциям.
  • Явно отражайте отправку данных и внешнюю AI-обработку в политике конфиденциальности продукта.
  • Не переносите временные результаты SDK в долговременное хранилище случайно.

Сохраняйте достоверный результат и резерв

Если процесс создаёт оригинал и обработанный результат, сохраняйте оригинал до проверки производного файла. Например, ошибка стабилизации не обязательно делает загруженный файл непригодным.

Считайте публичные модели результатов и завершающие callbacks единственным достоверным состоянием. Надписи Demo, предполагаемые коды и прогресс интерфейса — лишь представление, а не замена контракта SDK.

Контрольный список интеграции

  • У инициализации и регистрации плагинов один владелец.
  • Каждая функция проверяет готовность, протокол и возможность.
  • Промежуточные callbacks отделены от итогового результата.
  • Изменения UIKit выполняются в главной очереди.
  • Длительные процессы имеют идемпотентную очистку.
  • Смена точки доступа и интернет-маршрута отражается в UX.
  • Оригинальные медиа сохраняются при ошибке необязательной обработки.
  • Диагностические данные соответствуют политике конфиденциальности.
  • Тесты на реальном устройстве охватывают прерывание, отключение, повтор и уход с экрана.
  • API Reference и руководство функции проверяются после каждого обновления SDK.