Sync Device Time
Synchronize the connected device's internal clock with the current time. Use this operation when the device needs to align its clock without supplying a specific date.
Prerequisites
Before synchronizing the device time, ensure:
- The device is connected and in a stable state
- The device supports the
DeviceInfoAPIprotocol
API Reference
Framework
AIBuds.xcframework
Import
In the files where you want to use the SDK, import the main framework:
- Swift
- Objective-C
import AIBuds#import <AIBuds/AIBuds-Swift.h>
#import <AIBuds/AIBuds.h>Protocol
The syncDeviceTime method is defined in DeviceInfoAPI. The protocol inherits from the base device API protocol.
- Swift
- Objective-C
/// 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?)
}/// The protocol for device information related API.
@protocol AIBudsDeviceInfoAPI <AIBudsDeviceAPI>
/// 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.
- (void)syncDeviceTimeWithCompletion:(AIBudsStatusCodeCompletionHandler _Nullable)completion;
@endInstance Method
Synchronizes the device time with the current time.
- Swift
- Objective-C
/// 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?)/// 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.
- (void)syncDeviceTimeWithCompletion:(AIBudsStatusCodeCompletionHandler _Nullable)completion;Parameters
| Parameter | Type | Description |
|---|---|---|
completion | AIBudsStatusCodeCompletionHandler? | Optional completion handler called when the operation finishes. |
Callback Parameters:
| Name | Type | Description |
|---|---|---|
success | Bool / BOOL | true if the operation succeeded; otherwise false. |
statusCode | NSNumber? | The status code returned by the device. The SDK documents this value as nil when the operation fails. |
error | NSError? | Error details if the operation failed; otherwise nil. |
Return Value
This method does not return a value directly. The result is provided through the completion handler.
Usage Examples
- Swift
- Objective-C
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")
)
}
}
}#import <AIBuds/AIBuds-Swift.h>
#import <AIBuds/AIBuds.h>
@interface DeviceManager ()
/// The connected device
@property(weak, nonatomic) id<AIBudsDeviceConvertible> device;
@end
@implementation DeviceManager
- (void)synchronizeDeviceTime {
id<AIBudsDeviceInfoAPI> device = (id<AIBudsDeviceInfoAPI>)self.device;
if (![device conformsToProtocol:@protocol(AIBudsDeviceInfoAPI)]) {
NSLog(@"Device does not support time synchronization");
return;
}
[device syncDeviceTimeWithCompletion:^(
BOOL success, NSNumber *_Nullable statusCode, NSError *_Nullable error) {
if (!success) {
NSLog(@"Time synchronization failed: %@",
error.localizedDescription ?: @"Unknown error");
return;
}
NSLog(@"Time synchronized successfully. Status code: %@", statusCode ?: @"N/A");
}];
}
@endError Handling
The completion handler reports the result of the synchronization:
- Check
successbefore treating the operation as complete. - When
successisfalse, useerrorfor failure details. - Preserve
statusCodefor diagnostics or device-specific handling when it is available. - Do not assume a particular error or status code unless it is documented for the target device.
Best Practices
-
Check Protocol Conformance: Confirm that the device supports
DeviceInfoAPIbefore calling the method. -
Call After Connection: Synchronize only after the device is connected and ready.
-
Handle All Completion Values: Evaluate
success,statusCode, anderrorinstead of relying onerroralone. -
Update UI on the Main Queue: Dispatch completion-driven UIKit updates to the main queue.
Notes
syncDeviceTimedoes not accept a targetDate; usesetDeviceTime(to:completion:)when you need to provide one.- The public API describes synchronization with the current time but does not define a UTC conversion contract.
- Support for time synchronization can vary by device model and firmware.