Device applications चलाएँ
किसी application को शुरू या बंद करने से पहले device से मिली application list को authoritative source मानें।
आवश्यक शर्तें
- Device connected हो और
DeviceAppsAPIconform करता हो। - केवल
deviceAppsसे मिले raw values कोDeviceAppvalues में convert करें।
AI की सहायता से लागू करें
AI से बनाएँ
इस वर्कफ़्लो को AI से लागू करें
आधिकारिक “AIBuds डिवाइस ऐप्स प्रबंधित करें” स्किल से वर्कफ़्लो को अपने ऐप के अनुसार लागू करें।
https://docs-aibuds.github.io/hi/skills/manage-aibuds-device-apps को पढ़ें और निर्देशों का पालन करें। इस स्किल से “AIBuds डिवाइस ऐप्स प्रबंधित करें” को इस iOS प्रोजेक्ट में लागू करें और परिणाम सत्यापित करें।API Reference
Framework
AIBuds.xcframework
Protocol की घोषणा
- Swift
- Objective-C
/// 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उपलब्ध symbols
| Symbol | उपयोग |
|---|---|
deviceApps | उपलब्ध device applications के raw values। |
startApp | एक application शुरू करें। |
stopApp | एक application बंद करें। |
stopAllAppsAndReturnToHomeScreen | Home screen पर लौटें। |
getCurrentForegroundApp | Foreground app पूछें। |
Application values
| Swift | Objective-C | Raw value | अर्थ |
|---|---|---|---|
.homeScreen | AIBudsDeviceAppHomeScreen | 0x00 | Device home screen। इसे startApp या 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। |
उपयोग के उदाहरण
- Swift
- Objective-C
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);
}];Error handling
यह न मानें कि हर DeviceApp case हर device पर उपलब्ध है। Availability के लिए deviceApps, authoritative foreground state के लिए getCurrentForegroundApp उपयोग करें और product-specific handling के लिए device status codes सुरक्षित रखें।