Skip to content

Voice Assistant Get Offline Support

Mr.P edited this page Aug 29, 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