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

Количество медиафайлов

Запросите актуальное количество фото, видео и аудиофайлов на подключённом устройстве, а затем прочитайте обновлённое свойство mediaCountInfo.

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

Перед запросом количества медиафайлов убедитесь, что:

  • Устройство подключено и находится в стабильном состоянии.
  • Устройство поддерживает протокол DeviceInfoAPI.

Справочник API

Фреймворк

AIBuds.xcframework

Импорт

В файлах, где используется SDK, импортируйте основной фреймворк:

Swift
import AIBuds

Протокол

Метод запроса и свойство с результатом объявлены в DeviceInfoAPI.

Swift
protocol DeviceInfoAPI: DeviceAPI {
    /// Media file count information, including counts for photos, videos,
    /// audio, etc.
    var mediaCountInfo: MediaCountInfoModel? { get }

    /// Request to query the device media count information.
    /// - Parameters:
    ///   - completion: A closure that is called when the operation completes.
    ///   - success: `true` if the operation was successful; otherwise `false`.
    ///   - error: An `NSError` object that describes the error that occurred, or `nil` if the operation was successful.
    func requestQueryMediaCountInfo(
        _ completion: AIBudsCompletionHandler?
    )
}

Метод экземпляра

Запрашивает актуальное количество медиафайлов на устройстве.

Swift
/// Request to query the device media count information.
/// - Parameters:
///   - completion: A closure that is called when the operation completes.
///   - success: `true` if the operation was successful; otherwise `false`.
///   - error: An `NSError` object that describes the error that occurred, or `nil` if the operation was successful.
func requestQueryMediaCountInfo(
    _ completion: AIBudsCompletionHandler?
)

Параметры

ПараметрТипОписание
completionAIBudsCompletionHandler?Необязательный обработчик, вызываемый после завершения запроса.

Параметры обратного вызова:

ИмяТипОписание
successBool / BOOLtrue, если запрос выполнен успешно; иначе false.
errorNSError?Сведения об ошибке при неудачном запросе; иначе nil.

Свойства результата:

СвойствоТипОписание
photoCountNSNumberКоличество фотографий.
videoCountNSNumberКоличество видеофайлов.
audioCountNSNumberКоличество аудиофайлов.

Возвращаемое значение

Обработчик завершения не возвращает количество файлов. После успешного запроса прочитайте обновлённое свойство mediaCountInfo.

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

Swift
import AIBuds

final class DeviceManager {
    weak var device: DeviceConvertible?

    func queryMediaCount() {
        guard let device = device as? DeviceInfoAPI else {
            print("Device does not support media-count queries")
            return
        }

        device.requestQueryMediaCountInfo { success, error in
            guard success else {
                print("Media-count query failed: \(error?.localizedDescription ?? "Unknown error")")
                return
            }

            guard let counts = device.mediaCountInfo else {
                print("The device did not provide media-count information")
                return
            }

            print("Photos: \(counts.photoCount)")
            print("Videos: \(counts.videoCount)")
            print("Audio files: \(counts.audioCount)")
        }
    }
}

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

  1. Прежде чем читать обновлённое свойство, проверьте success.
  2. Если запрос не выполнен, сведения о причине доступны в error.
  3. Учитывайте значение nil для mediaCountInfo даже после успешного обратного вызова.
  4. Не полагайтесь на фиксированные коды ошибок, если они не задокументированы для конкретного устройства.

Рекомендации

  1. Читайте после успешного запроса: обращайтесь к mediaCountInfo только после успешного завершения запроса.
  2. Используйте опубликованные поля: считывайте количество фото, видео и аудиофайлов отдельно.
  3. Проверяйте соответствие протоколу: убедитесь, что устройство поддерживает DeviceInfoAPI.
  4. Обновляйте UI в главной очереди: выполняйте вызванные завершением обновления UIKit в главной очереди.

Примечания

  • Обработчик завершения сообщает состояние запроса, но не содержит результат MediaCountInfoModel.
  • MediaCountInfoModel предоставляет количество фото, видео и аудиофайлов в виде значений NSNumber.
  • В этой модели SDK не предоставляет свойство totalCount.
  • Количество файлов может меняться во время съёмки, импорта или удаления.