Factory Reset
The factory reset operation restores the device to its original factory settings, erasing all user data and custom configurations. This operation is useful when preparing a device for resale or troubleshooting persistent issues.
Prerequisites
Before performing a factory reset, ensure:
- The device is connected and in a stable state
- All important data has been backed up
- The user understands that all personal data will be erased
Implement with AI Assistance
Implement this workflow with AI
Use the official Implement AIBuds Factory Reset skill to adapt this workflow to your app.
Read and follow https://docs-aibuds.github.io/skills/implement-aibuds-factory-reset. Use it to implement Implement AIBuds Factory Reset in this iOS project and verify the result.API Reference
Framework
AIBuds.xcframework
Import
In the files where you want to use the SDK, import the main header:
- Swift
- Objective-C
import AIBuds#import <AIBuds/AIBuds.h>
#import <AIBuds/AIBuds-Swift.h>Protocol
The factoryReset method is defined in the following protocol. The protocol inherits from the base device API protocol.
- Swift
- Objective-C
/// Defines common device operations including factory reset
protocol DeviceCommonAPI: DeviceAPI {
/// Factory reset
/// - 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 factoryReset(_ completion: AIBudsCompletionHandler?)
}/// Defines common device operations including factory reset
@protocol AIBudsDeviceCommonAPI <AIBudsDeviceAPI>
/// Factory reset
/// - 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)factoryResetWithCompletion:(AIBudsCompletionHandler)completion;
@endInstance Method
Restores the device to its original factory settings, erasing all user data and custom configurations.
iOS 13.0+
- Swift
- Objective-C
/// Factory reset
/// - 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 factoryReset(_ completion: AIBudsCompletionHandler?)/// Factory reset
/// - 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)factoryResetWithCompletion:(AIBudsCompletionHandler)completion;Parameters
| Parameter | Type | Description |
|---|---|---|
| completion | AIBudsCompletionHandler? | Optional completion callback that is called when the operation completes. |
Callback Parameters:
| Name | Type | Description |
|---|---|---|
| success | Bool | true if the operation succeeded, false otherwise. |
| error | NSError? | Contains error information if the operation failed, nil otherwise. |
Return Value
This method does not return a value directly. The result is provided through the completion callback.
Usage Examples
- Swift
- Objective-C
import AIBuds
class DeviceManager {
/// The connected device
weak var device: DeviceConvertible?
/// Performs factory reset on the connected device
func performFactoryReset() {
// Ensure the device supports factory reset protocol
guard let device = device as? DeviceCommonAPI else {
print("Device does not support factory reset")
return
}
// Execute factory reset with completion handler
device.factoryReset { [weak self] success, error in
// Handle failure case
if !success {
let errorMessage = {
if let error = error {
return "\(error)"
}
return "Unknown error"
}()
print("Factory reset failed: \(errorMessage)")
return
}
// Handle success case
print("Factory reset completed successfully")
}
}
}#import <AIBuds/AIBuds.h>
@interface DeviceManager ()
/// The connected device
@property(weak, nonatomic) id<AIBudsDeviceConvertible> device;
@end
@implementation DeviceManager
- (void)performFactoryReset {
__weak typeof(self) weakSelf = self;
id<AIBudsDeviceCommonAPI> device = (id<AIBudsDeviceCommonAPI>)self.device;
// Ensure the device supports factory reset protocol
if ([device conformsToProtocol:@protocol(AIBudsDeviceCommonAPI)]) {
// Execute factory reset with completion handler
[device factoryResetWithCompletion:^(BOOL success, NSError *_Nullable error) {
// Handle failure case
if (!success) {
NSLog(@"Factory reset failed: %@", error);
return;
}
// Handle success case
NSLog(@"Factory reset completed successfully");
}];
}
}
@endError Handling
The completion handler may return the following error types:
Error Domain: AIBudsSDK.ErrorDomain
- Swift
- Objective-C
| Error Code | Description | Recovery Suggestion |
|---|---|---|
| .deviceNotConnected | Device is not connected | Ensure device is paired and connected |
| .bleCommandExecFailedDueToTimeout | Operation timed out | Retry the operation |
| .deviceBusy | Device is busy with another operation | Wait for ongoing operations to complete |
| .deviceNotSupport | Factory reset is not supported on this device | Check device capabilities before calling |
| Error Code | Description | Recovery Suggestion |
|---|---|---|
| AIBudsSdkErrorCodeDeviceNotConnected | Device is not connected | Ensure device is paired and connected |
| AIBudsSdkErrorCodeBleCommandExecFailedDueToTimeout | Operation timed out | Retry the operation |
| AIBudsSdkErrorCodeDeviceBusy | Device is busy with another operation | Wait for ongoing operations to complete |
| AIBudsSdkErrorCodeDeviceNotSupport | Factory reset is not supported on this device | Check device capabilities before calling |
Best Practices
-
Confirm with User: Always display a confirmation dialog before initiating a factory reset, as this operation is irreversible.
-
Handle Background Execution: Wrap the completion handler in a
DispatchQueue.main.asyncblock when updating UI. -
Weak Self Reference: Use
[weak self]in the completion handler to prevent retain cycles. -
Check Protocol Conformance: Verify the device conforms to
DeviceCommonAPIprotocol before calling the method. -
Clean Up References: After a successful factory reset, you may need to re-pair the device.
Notes
- Factory reset may take several seconds to complete
- The device will disconnect and reset during this operation
- All user data including paired devices, settings, and stored media will be erased
- The device will restart automatically after the reset completes