Выключение
Операция выключения программно отключает устройство. Эта операция полезна, когда вам нужно отключить устройство удаленно или как часть контролируемой последовательности выключения.
Предварительные условия
Перед выполнением выключения убедитесь, что:
- Устройство подключено и находится в стабильном состоянии
- Все несохраненные данные сохранены
- Пользователь понимает, что устройство отключится после выключения
Реализация с помощью AI
Реализуйте этот сценарий с AI
Используйте официальный навык «Выключение AIBuds» и адаптируйте сценарий к приложению.
Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/implement-aibuds-power-off. Используйте этот навык, чтобы реализовать «Выключение AIBuds» в данном iOS-проекте и проверить результат.Ссылка на API
Framework
AIBuds.xcframework
Import
В файлах, где вы хотите использовать SDK, импортируйте основной заголовок:
- Swift
- Objective-C
import AIBuds#import <AIBuds/AIBuds.h>
#import <AIBuds/AIBuds-Swift.h>Протокол
Метод powerOff определен в следующем протоколе. Протокол наследуется от базового протокола API устройства.
- Swift
- Objective-C
/// 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?)
}/// Defines common device operations including power off
@protocol AIBudsDeviceCommonAPI <AIBudsDeviceAPI>
/// 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.
- (void)powerOffWithCompletion:(AIBudsCompletionHandler)completion;
@endМетод экземпляра
Выключает устройство из приложения.
iOS 13.0+
- Swift
- Objective-C
/// 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?)/// 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.
- (void)powerOffWithCompletion:(AIBudsCompletionHandler)completion;Параметры
| Параметр | Тип | Описание |
|---|---|---|
| completion | AIBudsCompletionHandler? | Необязательный callback, вызываемый после завершения операции. |
Параметры callback:
| Имя | Тип | Описание |
|---|---|---|
| success | Bool | true, если операция выполнена успешно; иначе false. |
| error | NSError? | Сведения об ошибке при сбое; при успехе — nil. |
Возвращаемое значение
Метод не возвращает значение напрямую. Результат передается через callback завершения.
Примеры использования
- Swift
- Objective-C
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")
}
}
}#import <AIBuds/AIBuds.h>
@interface DeviceManager ()
/// The connected device
@property(weak, nonatomic) id<AIBudsDeviceConvertible> device;
@end
@implementation DeviceManager
- (void)powerOffDevice {
__weak typeof(self) weakSelf = self;
id<AIBudsDeviceCommonAPI> device = (id<AIBudsDeviceCommonAPI>)self.device;
// Ensure the device supports power off protocol
if ([device conformsToProtocol:@protocol(AIBudsDeviceCommonAPI)]) {
// Execute power off with completion handler
[device powerOffWithCompletion:^(BOOL success, NSError *_Nullable error) {
// Handle failure case
if (!success) {
NSLog(@"Power off failed: %@", error);
return;
}
// Handle success case
NSLog(@"Power off command sent successfully");
}];
}
}
@endОбработка ошибок
Обработчик завершения может вернуть следующие ошибки:
Домен ошибок: AIBudsSDK.ErrorDomain
- Swift
- Objective-C
| Код ошибки | Описание | Что делать |
|---|---|---|
| .deviceNotConnected | Устройство не подключено | Проверьте сопряжение и подключение |
| .bleCommandExecFailedDueToTimeout | Истекло время ожидания операции | Повторите операцию |
| .deviceBusy | Устройство занято другой операцией | Дождитесь завершения текущей операции |
| .deviceNotSupport | Устройство не поддерживает выключение | Проверьте возможности перед вызовом |
| Код ошибки | Описание | Что делать |
|---|---|---|
| AIBudsSdkErrorCodeDeviceNotConnected | Устройство не подключено | Проверьте сопряжение и подключение |
| AIBudsSdkErrorCodeBleCommandExecFailedDueToTimeout | Истекло время ожидания операции | Повторите операцию |
| AIBudsSdkErrorCodeDeviceBusy | Устройство занято другой операцией | Дождитесь завершения текущей операции |
| AIBudsSdkErrorCodeDeviceNotSupport | Устройство не поддерживает выключение | Проверьте возможности перед вызовом |
Рекомендации
-
Запросите подтверждение: перед выключением покажите диалог подтверждения, поскольку устройство отключится от приложения.
-
Обновляйте интерфейс в главном потоке: при изменении UI из callback используйте
DispatchQueue.main.async. -
Используйте слабую ссылку: добавьте
[weak self]в callback, чтобы избежать цикла удержания. -
Проверьте поддержку протокола: перед вызовом убедитесь, что устройство поддерживает
DeviceCommonAPI. -
Обработайте отключение: после успешного выключения корректно обновите состояние подключения в приложении.
Примечания
- После выполнения команды выключения устройство отключится от приложения
- Пользователь сможет включить устройство вручную
- Все выполняющиеся операции будут прерваны
- Выключение может занять несколько секунд