-
Notifications
You must be signed in to change notification settings - Fork 0
Core Device Apps Applications
Mr.P edited this page Aug 29, 2026
·
2 revisions
Use the device-provided application list as the source of truth before starting or stopping an application.
- The device is connected and conforms to
DeviceAppsAPI. - Convert only raw values returned by
deviceAppsintoDeviceAppvalues.
AIBuds.xcframework
/// The protocol for device apps API. (Device Side Applications)
protocol DeviceAppsAPI: DeviceAPI {
/// List of apps installed on the device, each element is an `NSNumber` wrapping the raw value of `DeviceApp`.
var deviceApps: [NSNumber]? { get }
/// Start the device side application.
/// - Parameters:
/// - app: The app to start.
/// - completion: Reports success, the device status code, and an optional error.
func startApp(_ app: DeviceApp, completion: AIBudsStatusCodeCompletionHandler?)
/// Stop the device side application.
/// - Parameters:
/// - app: The app to stop.
/// - completion: Reports success, the device status code, and an optional error.
func stopApp(_ app: DeviceApp, completion: AIBudsStatusCodeCompletionHandler?)
/// Stop all running applications and return to the home screen.
/// - Parameter completion: Reports success and an optional error.
func stopAllAppsAndReturnToHomeScreen(_ completion: AIBudsCompletionHandler?)
/// Get the current foreground application.
/// - Parameter completion: Reports success, the foreground app raw value, and an optional error.
func getCurrentForegroundApp(
_ completion: (
(
_ success: Bool,
_ app: NSNumber?,
_ error: NSError?
) -> Void
)?
)
}/// The protocol for device apps API. (Device Side Applications)
@protocol AIBudsDeviceAppsAPI <AIBudsDeviceAPI>
@property(nonatomic, readonly, copy) NSArray<NSNumber *> *_Nullable deviceApps;
/// Start the device side application.
- (void)startApp:(enum AIBudsDeviceApp)app
completion:(AIBudsStatusCodeCompletionHandler _Nullable)completion;
/// Stop the device side application.
- (void)stopApp:(enum AIBudsDeviceApp)app
completion:(AIBudsStatusCodeCompletionHandler _Nullable)completion;
/// Stop all running applications and return to the home screen.
- (void)stopAllAppsAndReturnToHomeScreenWithCompletion:
(AIBudsCompletionHandler _Nullable)completion;
/// Get the current foreground application.
- (void)getCurrentForegroundAppWithCompletion:
(void (^_Nullable)(BOOL, NSNumber *_Nullable, NSError *_Nullable))completion;
@end| Symbol | Purpose |
|---|---|
deviceApps |
Raw values for available device applications. |
startApp |
Start one application. |
stopApp |
Stop one application. |
stopAllAppsAndReturnToHomeScreen |
Return to the home screen. |
getCurrentForegroundApp |
Query the foreground app. |
| Swift | Objective-C | Raw value | Meaning |
|---|---|---|---|
.homeScreen |
AIBudsDeviceAppHomeScreen |
0x00 |
Device home screen. Do not pass it to startApp or stopApp. |
.teleprompter |
AIBudsDeviceAppTeleprompter |
0x01 |
Teleprompter application. |
.aiChat |
AIBudsDeviceAppAiChat |
0x02 |
AI conversation application. |
.navigation |
AIBudsDeviceAppNavigation |
0x03 |
Navigation application. |
.clock |
AIBudsDeviceAppClock |
0x04 |
Clock application. |
.translation |
AIBudsDeviceAppTranslation |
0x05 |
Translation application. |
guard let device = device as? DeviceAppsAPI else { return }
let apps = (device.deviceApps ?? []).compactMap {
DeviceApp(rawValue: $0.intValue)
}
guard let app = apps.first else {
print("No device application is available")
return
}
device.startApp(app) { success, statusCode, error in
guard success else {
print(error?.localizedDescription ?? "Application failed to start")
return
}
print("Application started: \(statusCode?.stringValue ?? "Unavailable")")
}
device.getCurrentForegroundApp { success, rawApp, error in
let foreground = rawApp.flatMap { DeviceApp(rawValue: $0.intValue) }
print(
success
? "Foreground: \(String(describing: foreground))"
: (error?.localizedDescription ?? "Query failed"))
}id<AIBudsDeviceAppsAPI> device = (id<AIBudsDeviceAppsAPI>)self.device;
if (![device conformsToProtocol:@protocol(AIBudsDeviceAppsAPI)])
return;
NSNumber *rawApp = device.deviceApps.firstObject;
if (rawApp != nil) {
AIBudsDeviceApp app = (AIBudsDeviceApp)rawApp.integerValue;
[device startApp:app
completion:^(BOOL success, NSNumber *_Nullable statusCode, NSError *_Nullable error) {
if (!success)
NSLog(@"Application failed to start: %@", error.localizedDescription);
}];
}
[device getCurrentForegroundAppWithCompletion:^(
BOOL success, NSNumber *_Nullable app, NSError *_Nullable error) {
NSLog(success ? @"Foreground app: %@" : @"Query failed: %@",
success ? app : error.localizedDescription);
}];Do not assume every DeviceApp case exists on every device. Use deviceApps for availability, getCurrentForegroundApp for authoritative foreground state, and preserve device status codes for product-specific handling.
AIBuds SDK documentation · Full documentation · API Reference
- Introduction
- Getting Started
- Core Concepts
-
Core Features
- Basic Features
- Device Info
- Find Device
- Physical Operations
- Work Mode
- Work Status
- Wear Detection
- Volume Control
- Music Control
- TWS
- Equalizer
- ANC
- Audio
- Camera
- Remote Camera
- File Import
- Teleprompter
- Segment Navigation
- Live Streaming
- Device Applications
- OTA
- Camera OTA
- Service Auth
- AI Services
- Voice Assistant
- Logging
- Advanced Topics
- Releases
- Troubleshooting