Ana içeriğe geç

Aygıt Saatini Eşitleme

Bağlı aygıtın dahili saatini geçerli saatle eşitleyin. Belirli bir tarih vermeden aygıt saatini hizalamak istediğinizde bu işlemi kullanın.

Ön Koşullar

Aygıt saatini eşitlemeden önce şunları doğrulayın:

  • Aygıt bağlı ve kararlı durumdadır
  • Aygıt DeviceInfoAPI protokolünü destekler

API Reference

Framework

AIBuds.xcframework

Import

SDK'yı kullanacağınız dosyalarda ana framework'ü içe aktarın:

Swift
import AIBuds

Protokol

syncDeviceTime yöntemi DeviceInfoAPI içinde tanımlıdır. Bu protokol temel aygıt API protokolünden türetilir.

Swift
/// The protocol for device information related API.
protocol DeviceInfoAPI: DeviceAPI {
    /// Synchronizes the device time with the current time.
    /// - Parameters:
    ///   - 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 syncDeviceTime(_ completion: AIBudsStatusCodeCompletionHandler?)
}

Örnek Yöntemi

Aygıt saatini geçerli saatle eşitler.

Swift
/// Synchronizes the device time with the current time.
/// - Parameters:
///   - 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 syncDeviceTime(_ completion: AIBudsStatusCodeCompletionHandler?)

Parametreler

ParametreTürAçıklama
completionAIBudsStatusCodeCompletionHandler?İşlem tamamlandığında çağrılan isteğe bağlı tamamlanma işleyicisi.

Geri Çağrı Parametreleri:

AdTürAçıklama
successBool / BOOLİşlem başarılıysa true; aksi halde false.
statusCodeNSNumber?Aygıtın döndürdüğü durum kodu. SDK, işlem başarısız olduğunda bu değerin nil olduğunu belirtir.
errorNSError?İşlem başarısızsa hata ayrıntıları; aksi halde nil.

Dönüş Değeri

Bu yöntem doğrudan bir değer döndürmez. Sonuç tamamlanma işleyicisi aracılığıyla iletilir.

Kullanım Örnekleri

Swift
import AIBuds

final class DeviceManager {

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

    /// Synchronizes the connected device with the current time
    func synchronizeDeviceTime() {
        guard let device = device as? DeviceInfoAPI else {
            print("Device does not support time synchronization")
            return
        }

        device.syncDeviceTime { success, statusCode, error in
            if !success {
                print(
                    "Time synchronization failed: "
                        + (error?.localizedDescription ?? "Unknown error")
                )
                return
            }

            print(
                "Time synchronized successfully. Status code: " + (statusCode?.stringValue ?? "N/A")
            )
        }
    }
}

Hata Yönetimi

Tamamlanma işleyicisi eşitleme işleminin sonucunu bildirir:

  1. İşlemi tamamlanmış kabul etmeden önce success değerini kontrol edin.
  2. success değeri false ise hata ayrıntıları için error değerini kullanın.
  3. Varsa tanılama veya aygıta özgü işleme için statusCode değerini koruyun.
  4. Hedef aygıt için belgelenmedikçe belirli bir hata veya durum kodu varsaymayın.

En İyi Uygulamalar

  1. Protokol Uyumluluğunu Denetleyin: Yöntemi çağırmadan önce aygıtın DeviceInfoAPI desteğini doğrulayın.

  2. Bağlantıdan Sonra Çağırın: Yalnızca aygıt bağlanıp hazır olduktan sonra eşitleyin.

  3. Tüm Completion Değerlerini İşleyin: success, statusCode ve error değerlerini birlikte değerlendirin; yalnızca error değerine güvenmeyin.

  4. Arayüzü Ana Kuyrukta Güncelleyin: Tamamlanma geri çağrısına bağlı UIKit güncellemelerini ana kuyruğa aktarın.

Notlar

  • syncDeviceTime hedef bir Date kabul etmez; belirli bir tarih vermeniz gerekiyorsa setDeviceTime(to:completion:) kullanın.
  • Genel API geçerli saatle eşitlemeyi tanımlar ancak UTC dönüşüm sözleşmesi belirtmez.
  • Saat eşitleme desteği aygıt modeline ve firmware sürümüne göre değişebilir.