Skip to content

Core Audio Normal Recording

Mr.P edited this page Aug 25, 2026 · 2 revisions

Standard Recording

Request the connected device to start or stop its standard audio recording session.

Prerequisites

  • The device is connected and ready.
  • The device conforms to DeviceAudioRecordingAPI.
  • The device has sufficient storage for the recording.

API Reference

Framework

AIBuds.xcframework

Import

Swift

import AIBuds

Objective-C

#import <AIBuds/AIBuds.h>
#import <AIBuds/AIBuds-Swift.h>

Protocol

The requests are defined by DeviceAudioRecordingAPI.

Swift

/// The protocol for device API that supports audio recording.
protocol DeviceAudioRecordingAPI: DeviceAPI {
    /// Requests the device to start an audio recording session.
    /// - 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 requestStartAudioRecording(_ completion: AIBudsStatusCodeCompletionHandler?)

    /// Requests the device to stop the current audio recording session.
    /// - 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 requestStopAudioRecording(_ completion: AIBudsStatusCodeCompletionHandler?)
}

Objective-C

/// The protocol for device API that supports audio recording.
@protocol AIBudsDeviceAudioRecordingAPI <AIBudsDeviceAPI>
    /// Requests the device to start an audio recording session.
    /// - 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)requestStartAudioRecordingWithCompletion:(AIBudsStatusCodeCompletionHandler _Nullable)completion;

    /// Requests the device to stop the current audio recording session.
    /// - 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)requestStopAudioRecordingWithCompletion:(AIBudsStatusCodeCompletionHandler _Nullable)completion;
@end

Instance Methods

Method Purpose
requestStartAudioRecording Request the device to start recording.
requestStopAudioRecording Request the device to stop recording.

Completion Values

Name Type Description
success Bool / BOOL Whether the request succeeded.
statusCode NSNumber? Status code returned by the device, or nil if the operation failed.
error NSError? Failure details, or nil on success.

The methods do not return a recording file path. The result is the device command status.

Usage Examples

Swift

import AIBuds

guard let device = device as? DeviceAudioRecordingAPI else {
    print("Device does not support audio recording")
    return
}

device.requestStartAudioRecording { success, statusCode, error in
    guard success else {
        print("Start failed: \(error?.localizedDescription ?? "Unknown error")")
        return
    }
    print("Recording started, status: \(statusCode?.stringValue ?? "Unavailable")")
}

// Call this from the UI action that stops the active recording.
device.requestStopAudioRecording { success, statusCode, error in
    guard success else {
        print("Stop failed: \(error?.localizedDescription ?? "Unknown error")")
        return
    }
    print("Recording stopped, status: \(statusCode?.stringValue ?? "Unavailable")")
}

Objective-C

#import <AIBuds/AIBuds.h>
#import <AIBuds/AIBuds-Swift.h>

id<AIBudsDeviceAudioRecordingAPI> device =
    (id<AIBudsDeviceAudioRecordingAPI>)self.device;
if (![device conformsToProtocol:@protocol(AIBudsDeviceAudioRecordingAPI)]) {
    NSLog(@"Device does not support audio recording");
    return;
}

[device requestStartAudioRecordingWithCompletion:^(BOOL success, NSNumber * _Nullable statusCode, NSError * _Nullable error) {
    if (!success) {
        NSLog(@"Start failed: %@", error.localizedDescription);
        return;
    }
    NSLog(@"Recording started, status: %@", statusCode);
}];

// Call this from the UI action that stops the active recording.
[device requestStopAudioRecordingWithCompletion:^(BOOL success, NSNumber * _Nullable statusCode, NSError * _Nullable error) {
    if (!success) {
        NSLog(@"Stop failed: %@", error.localizedDescription);
        return;
    }
    NSLog(@"Recording stopped, status: %@", statusCode);
}];

Error Handling

Use success as the primary result. Preserve the returned statusCode for device-specific handling and surface error when available; the public protocol does not document the meaning of individual status-code values.

AIBuds SDK iOS Wiki

Clone this wiki locally