Перейти к основному содержимому

Управление приложениями устройства

Перед запуском или остановкой используйте список приложений устройства как достоверный источник.

Предварительные условия

  • Устройство подключено и поддерживает DeviceAppsAPI.
  • Преобразуйте в DeviceApp только исходные значения из deviceApps.

Реализация с помощью AI

Разработка с AI

Реализуйте этот сценарий с AI

Используйте официальный навык «Управление приложениями AIBuds» и адаптируйте сценарий к приложению.

Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/manage-aibuds-device-apps. Используйте этот навык, чтобы реализовать «Управление приложениями AIBuds» в данном iOS-проекте и проверить результат.
Открыть официальный навык

Справочник API

Фреймворк

AIBuds.xcframework

Протокол

Swift
/// 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
        )?
    )
}

Символы

СимволНазначение
deviceAppsИсходные значения доступных приложений устройства.
startAppЗапустить одно приложение.
stopAppОстановить одно приложение.
stopAllAppsAndReturnToHomeScreenВернуться на главный экран.
getCurrentForegroundAppЗапросить активное приложение.

Значения приложений

SwiftObjective-CИсходное значениеСмысл
.homeScreenAIBudsDeviceAppHomeScreen0x00Главный экран устройства. Не передавайте в startApp или stopApp.
.teleprompterAIBudsDeviceAppTeleprompter0x01Телесуфлёр.
.aiChatAIBudsDeviceAppAiChat0x02Приложение AI-диалога.
.navigationAIBudsDeviceAppNavigation0x03Навигация.
.clockAIBudsDeviceAppClock0x04Часы.
.translationAIBudsDeviceAppTranslation0x05Перевод.

Примеры использования

Swift
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"))
}

Обработка ошибок

Не считайте, что каждый вариант DeviceApp есть на любом устройстве. Доступность определяйте по deviceApps, достоверное активное состояние — по getCurrentForegroundApp, а коды состояния сохраняйте для продуктовой обработки.