Skip to content

Voice Assistant Get Offline Support

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

Get On-Device Support

Read the connected device's voice-assistant capability before displaying mode controls.

Prerequisites

API Reference

Framework

AIBuds.xcframework

Import

Swift

import AIBuds
import AIBudsFoundation

Objective-C

#import <AIBuds/AIBuds-Swift.h>

Declaration

Swift

/// The protocol for the on-device voice assistant API.
protocol OnDeviceVoiceAssistantAPI: DeviceAPI {
    /// The capability of the on-device voice assistant.
    var onDeviceVoiceAssistantCapability: OnDeviceVoiceAssistantCapability { get }
}

Objective-C

/// The protocol for the on-device voice assistant API.
@protocol AIBudsOnDeviceVoiceAssistantAPI <AIBudsDeviceAPI>
    /// The capability of the on-device voice assistant.
    @property (nonatomic, readonly)
        AIBudsOnDeviceVoiceAssistantCapability onDeviceVoiceAssistantCapability;
@end

See onDeviceVoiceAssistantCapability and OnDeviceVoiceAssistantCapability.

Usage Examples

Swift

guard let voiceAssistant = device as? OnDeviceVoiceAssistantAPI else {
    supportLabel.text = "Not supported"
    return
}

switch voiceAssistant.onDeviceVoiceAssistantCapability {
case .none:
    supportLabel.text = "No voice-command capability"
case .keywordWakeup:
    supportLabel.text = "Keyword wake-up"
case .common:
    supportLabel.text = "Common voice commands"
}

Objective-C

id<AIBudsOnDeviceVoiceAssistantAPI> voiceAssistant =
    (id<AIBudsOnDeviceVoiceAssistantAPI>)self.device;

if (![voiceAssistant conformsToProtocol:
        @protocol(AIBudsOnDeviceVoiceAssistantAPI)]) {
    self.supportLabel.text = @"Not supported";
    return;
}

switch (voiceAssistant.onDeviceVoiceAssistantCapability) {
    case AIBudsOnDeviceVoiceAssistantCapabilityNone:
        self.supportLabel.text = @"No voice-command capability";
        break;
    case AIBudsOnDeviceVoiceAssistantCapabilityKeywordWakeup:
        self.supportLabel.text = @"Keyword wake-up";
        break;
    case AIBudsOnDeviceVoiceAssistantCapabilityCommon:
        self.supportLabel.text = @"Common voice commands";
        break;
}

Notes

  • Protocol conformance and capability are separate checks. A conforming device can still report .none.
  • Capability is a property, not an asynchronous query.
  • Use capability to restrict the modes presented by the UI.

AIBuds SDK iOS Wiki

Clone this wiki locally