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

Выключение

Операция выключения программно отключает устройство. Эта операция полезна, когда вам нужно отключить устройство удаленно или как часть контролируемой последовательности выключения.

Предварительные условия

Перед выполнением выключения убедитесь, что:

  • Устройство подключено и находится в стабильном состоянии
  • Все несохраненные данные сохранены
  • Пользователь понимает, что устройство отключится после выключения

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

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

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

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

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

Ссылка на API

Framework

AIBuds.xcframework

Import

В файлах, где вы хотите использовать SDK, импортируйте основной заголовок:

Swift
import AIBuds

Протокол

Метод powerOff определен в следующем протоколе. Протокол наследуется от базового протокола API устройства.

Swift
/// Defines common device operations including power off
protocol DeviceCommonAPI: DeviceAPI {
    /// Power off the device
    /// - Parameters:
    ///   - completion: Completion callback that returns the operation result
    ///     - success: `true` if the operation was successful; otherwise `false`.
    ///     - error: An `NSError` object that describes the error that occurred, or `nil` if the operation was successful.
    func powerOff(_ completion: AIBudsCompletionHandler?)
}

Метод экземпляра

Выключает устройство из приложения.

iOS 13.0+

Swift
/// Power off the device
/// - Parameters:
///   - completion: Completion callback that returns the operation result
///     - success: `true` if the operation was successful; otherwise `false`.
///     - error: An `NSError` object that describes the error that occurred, or `nil` if the operation was successful.
func powerOff(_ completion: AIBudsCompletionHandler?)

Параметры

ПараметрТипОписание
completionAIBudsCompletionHandler?Необязательный callback, вызываемый после завершения операции.

Параметры callback:

ИмяТипОписание
successBooltrue, если операция выполнена успешно; иначе false.
errorNSError?Сведения об ошибке при сбое; при успехе — nil.

Возвращаемое значение

Метод не возвращает значение напрямую. Результат передается через callback завершения.

Примеры использования

Swift
import AIBuds

class DeviceManager {

    /// The connected device
    weak var device: DeviceConvertible?

    /// Powers off the connected device
    func powerOffDevice() {
        // Ensure the device supports power off protocol
        guard let device = device as? DeviceCommonAPI else {
            print("Device does not support power off")
            return
        }

        // Execute power off with completion handler
        device.powerOff { [weak self] success, error in
            // Handle failure case
            if !success {
                let errorMessage = {
                    if let error = error {
                        return "\(error)"
                    }
                    return "Unknown error"
                }()
                print("Power off failed: \(errorMessage)")
                return
            }
            // Handle success case
            print("Power off command sent successfully")
        }
    }
}

Обработка ошибок

Обработчик завершения может вернуть следующие ошибки:

Домен ошибок: AIBudsSDK.ErrorDomain

Код ошибкиОписаниеЧто делать
.deviceNotConnectedУстройство не подключеноПроверьте сопряжение и подключение
.bleCommandExecFailedDueToTimeoutИстекло время ожидания операцииПовторите операцию
.deviceBusyУстройство занято другой операциейДождитесь завершения текущей операции
.deviceNotSupportУстройство не поддерживает выключениеПроверьте возможности перед вызовом

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

  1. Запросите подтверждение: перед выключением покажите диалог подтверждения, поскольку устройство отключится от приложения.

  2. Обновляйте интерфейс в главном потоке: при изменении UI из callback используйте DispatchQueue.main.async.

  3. Используйте слабую ссылку: добавьте [weak self] в callback, чтобы избежать цикла удержания.

  4. Проверьте поддержку протокола: перед вызовом убедитесь, что устройство поддерживает DeviceCommonAPI.

  5. Обработайте отключение: после успешного выключения корректно обновите состояние подключения в приложении.

Примечания

  • После выполнения команды выключения устройство отключится от приложения
  • Пользователь сможет включить устройство вручную
  • Все выполняющиеся операции будут прерваны
  • Выключение может занять несколько секунд