Query Storage Information
Request the latest storage information from a connected device, then read the updated storageInfo property.
Prerequisites
Before querying storage information, 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 request method and result property are defined in DeviceInfoAPI.
- Swift
- Objective-C
protocol DeviceInfoAPI: DeviceAPI {
/// Device storage information.
var storageInfo: StorageInfoModel? { get }
/// Request to query the device storage information.
/// - Parameters:
/// - completion: A closure that is called when the operation completes.
/// - 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 requestQueryStorageInfo(
_ completion: AIBudsCompletionHandler?
)
}@protocol AIBudsDeviceInfoAPI <AIBudsDeviceAPI>
/// Device storage information.
@property(nonatomic, readonly, strong) AIBudsStorageInfoModel *_Nullable storageInfo;
/// Request to query the device storage information.
/// - Parameters:
/// - completion: A closure that is called when the operation completes.
/// - 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)requestQueryStorageInfoWithCompletion:(AIBudsCompletionHandler _Nullable)completion;
@endInstance Method
Requests the latest device storage information.
- Swift
- Objective-C
/// Request to query the device storage information.
/// - Parameters:
/// - completion: A closure that is called when the operation completes.
/// - 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 requestQueryStorageInfo(
_ completion: AIBudsCompletionHandler?
)/// Request to query the device storage information.
/// - Parameters:
/// - completion: A closure that is called when the operation completes.
/// - 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)requestQueryStorageInfoWithCompletion:(AIBudsCompletionHandler _Nullable)completion;Parameters
| Parameter | Type | Description |
|---|---|---|
completion | AIBudsCompletionHandler? | Optional completion handler called when the request finishes. |
Callback Parameters:
| Name | Type | Description |
|---|---|---|
success | Bool / BOOL | true if the request succeeded; otherwise false. |
error | NSError? | Error details if the request failed; otherwise nil. |
Result Properties:
| Property | Type | Description |
|---|---|---|
usedSpaceInMB | NSNumber | Used storage space in megabytes. |
freeSpaceInMB | NSNumber | Remaining available storage space in megabytes. |
Return Value
The method does not return storage data in its completion handler. After a successful request, read the updated storageInfo property.
Usage Examples
- Swift
- Objective-C
import AIBuds
final class DeviceManager {
weak var device: DeviceConvertible?
func queryStorageInformation() {
guard let device = device as? DeviceInfoAPI else {
print("Device does not support storage queries")
return
}
device.requestQueryStorageInfo { success, error in
guard success else {
print("Storage query failed: \(error?.localizedDescription ?? "Unknown error")")
return
}
guard let storage = device.storageInfo else {
print("The device did not provide storage information")
return
}
print("Used storage: \(storage.usedSpaceInMB) MB")
print("Free storage: \(storage.freeSpaceInMB) MB")
}
}
}#import <AIBuds/AIBuds-Swift.h>
#import <AIBuds/AIBuds.h>
@interface DeviceManager ()
@property(weak, nonatomic) id<AIBudsDeviceConvertible> device;
@end
@implementation DeviceManager
- (void)queryStorageInformation {
id<AIBudsDeviceInfoAPI> device = (id<AIBudsDeviceInfoAPI>)self.device;
if (![device conformsToProtocol:@protocol(AIBudsDeviceInfoAPI)]) {
NSLog(@"Device does not support storage queries");
return;
}
[device requestQueryStorageInfoWithCompletion:^(BOOL success, NSError *_Nullable error) {
if (!success) {
NSLog(@"Storage query failed: %@", error.localizedDescription ?: @"Unknown error");
return;
}
AIBudsStorageInfoModel *storage = device.storageInfo;
if (!storage) {
NSLog(@"The device did not provide storage information");
return;
}
NSLog(@"Used storage: %@ MB", storage.usedSpaceInMB);
NSLog(@"Free storage: %@ MB", storage.freeSpaceInMB);
}];
}
@endError Handling
- Check
successbefore reading the refreshed property. - Use
errorfor failure details when the request does not succeed. - Handle a
nilstorageInfovalue even after a successful callback. - Do not assume fixed error codes unless they are documented for the target device.
Best Practices
- Read After Success: Access
storageInfoonly after the query completes successfully. - Keep the SDK Unit: Treat both values as megabytes; do not interpret them as bytes.
- Check Protocol Conformance: Confirm that the device supports
DeviceInfoAPI. - Update UI on the Main Queue: Dispatch completion-driven UIKit updates to the main queue.
Notes
- The completion handler reports request status; it does not contain a
StorageInfoModelresult. StorageInfoModelexposes only used and free space in megabytes.- The SDK does not expose a separate total-capacity property in this model.
- Storage information can change while media is recorded, imported, or deleted.