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

Установка времени устройства

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

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

Перед установкой времени устройства убедитесь, что:

  • Устройство подключено и находится в стабильном состоянии.
  • Устройство поддерживает протокол DeviceInfoAPI.
  • Значение Date содержит именно те дату и время, которые приложение намерено передать.

Справочник API

Фреймворк

AIBuds.xcframework

Импорт

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

Swift
import AIBuds

Протокол

Метод setDeviceTime объявлен в DeviceInfoAPI. Этот протокол наследуется от базового протокола API устройства.

Swift
/// The protocol for device information related API.
protocol DeviceInfoAPI: DeviceAPI {
    /// Sets the device's system time.
    /// - Parameters:
    ///   - date: The target time to set on the device.
    ///   - completion: A closure that is called when the operation completes.
    ///     - success: `true` if the operation was successful; otherwise `false`.
    ///     - statusCode: The status code returned by the device. `nil` if the operation failed.
    ///     - error: An `NSError` object that describes the error that occurred, or `nil` if the operation was successful.
    func setDeviceTime(
        to date: Date,
        completion: AIBudsStatusCodeCompletionHandler?
    )
}

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

Устанавливает системное время устройства по переданной дате.

Swift
/// Sets the device's system time.
/// - Parameters:
///   - date: The target time to set on the device.
///   - completion: A closure that is called when the operation completes.
///     - success: `true` if the operation was successful; otherwise `false`.
///     - statusCode: The status code returned by the device. `nil` if the operation failed.
///     - error: An `NSError` object that describes the error that occurred, or `nil` if the operation was successful.
func setDeviceTime(
    to date: Date,
    completion: AIBudsStatusCodeCompletionHandler?
)

Параметры

ПараметрТипОписание
dateDate / NSDateДата и время, которые нужно установить на устройстве.
completionAIBudsStatusCodeCompletionHandler?Необязательный обработчик, вызываемый после завершения операции.

Параметры обратного вызова:

ИмяТипОписание
successBool / BOOLtrue, если операция выполнена успешно; иначе false.
statusCodeNSNumber?Код состояния, возвращённый устройством. Согласно документации SDK, при ошибке значение равно nil.
errorNSError?Сведения об ошибке при неудачной операции; иначе nil.

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

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

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

Swift
import AIBuds

final class DeviceManager {

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

    /// Sets the connected device to the supplied date
    func setDeviceTime(to date: Date) {
        guard let device = device as? DeviceInfoAPI else {
            print("Device does not support setting the time")
            return
        }

        device.setDeviceTime(to: date) { success, statusCode, error in
            if !success {
                print(
                    "Failed to set device time: " + (error?.localizedDescription ?? "Unknown error")
                )
                return
            }

            print(
                "Device time set successfully. Status code: " + (statusCode?.stringValue ?? "N/A")
            )
        }
    }
}

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

Обработчик завершения сообщает результат операции:

  1. Считайте время установленным только после проверки success.
  2. Если success равно false, сведения о причине доступны в error.
  3. Если доступен statusCode, сохраняйте его для диагностики или обработки особенностей устройства.
  4. Не полагайтесь на конкретный код ошибки или состояния, если он не задокументирован для данного устройства.

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

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

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

  3. Вызывайте после подключения: устанавливайте время только после подключения и готовности устройства.

  4. Обрабатывайте все значения: проверяйте success, statusCode и error.

  5. Обновляйте UI в главной очереди: выполняйте вызванные завершением обновления UIKit в главной очереди.

Примечания

  • Публичный API принимает Date, но не определяет правила преобразования UTC. Не делайте предположений о часовом поясе, если они не предусмотрены конкретным устройством.
  • Если устройству достаточно синхронизации с текущим временем, используйте syncDeviceTime(_:).
  • Поддержка установки заданного времени зависит от модели устройства и версии прошивки.