DiskUsage
– плагин, предназначенный для мониторинга использования дискового пространства вашим приложением. Он позволяет отслеживать, какие проекты или сборки занимают больше всего места на диске, что может быть полезно для управления ресурсами и оптимизации использования хранилища. С помощью этого плагина возможно отслеживать утекающие или забытые файлы и вовре мя их удалять. Полезно, чтобы пользователь не удалял ваше приложение, когда на его устройстве закончится место :)
Этот плагин предоставляет информацию о размере и распределении файлов и каталогов на диске. С его помощью также возможно установить оптимальное количество занимаемого на диске пространства, чтобы знать, если ваш проект использует больше места, чем хотелось бы. В самом отчёте это выглядит следующим образом:
Все файлы распределены по 3-ем GlobalDirs
, которые по умолчанию имеют значения:
Директория | Описание |
---|---|
int_data | Внутренние данные приложения: кэши, временные файлы, логи и другие. Это корневая папка приложения, в которой хранятся такие папки, как files , caсhe , shared_prefs и другие файлы, относящиеся к работе приложения. |
ext_data | Данные, предназначенные для обмена с внешними системами или пользователями: загружаемые файлы, выгрузки, обменные файлы и другие. Здесь можно найти файлы временных кэшей, журналы, временные файлы сеанс ов и т. д. |
src_data | Исходные кода приложения: исходные коды программ, скрипты, конфигурации и другие ресурсы. |
Информация обо всех утечках файлов агрегируется в отдельный отчёт по версии используемого приложения. Найти эти отчёты можно в верхней панели в разделе «Использование диска»:
Внутри самого отчёта предоставлена основная информация о проекте и распределении файлов и каталогов на диске с указанием количества утечек. Важно понимать, что инструмент не выгружает данные из вашей файловой системы, а лишь помогает найти путь до необходимых ресурсов на диске:
Для cocoapods Podfile
source 'https://github.com/odnoklassniki/tracer-ios.git' pod 'OKTracer'
За настройку отвечает DiskUsageConfiguration
:
Параметр | Тип | Описание |
---|---|---|
systemExcluded | [FileManager.SearchPathDirectory]? | Список системных директорий, которые будут исключены из мониторинга. По умолчанию nil . |
excluded | [String]? | Список пользовательских директорий (путей), которые необходимо исключить из мониторинга. По умолчанию содержит TracerStorage . |
notifyIfEquals | Bool? | Если true , отчёты отправляются, даже если использование диска не изменилось. По умолчанию false . |
maxDepth | Int? | Максимальная глубина обхода директорий при вычислении использования диска. По умолчанию 200. |
maxEntries | Int? | Максимальное количество записей директорий для мониторинга диска. По умолчанию 400. |
isRecursive | Bool? | Указывает, должен ли мониторинг рекурсивно обходить поддиректории. По умолчанию true . |
observeMode | DiskUsageObserveMode? | Определяет режим наблюдения за использованием диска. Может быть timer(interval: TimeInterval) или постоянным – permanently . По умолчанию .timer(interval: 86400) . |
autoStart | Bool? | Определяет, должен ли мониторинг автоматически запускаться. По умолчанию true . |
difference | Int? | Минимальное изменение в использовании диска (в байтах), необходимое для отправки уведомления. По умолчанию 1 байт. |
probability | Int | Вероятность того, что раз в день в фоновом режиме будет произведена проверка использования дискового пространства. По умолчанию 0 (мониторинг включён). |
DiskUsageObject
используется для привязки конфигурации к отслеживаемым объектам и сценариям. Включает директории, папки и файлы с возможностью присвоения им тега для идентификации. Инициализируется следующими свойствами:
Параметр | Тип | Описание |
---|---|---|
path | String | Возвращает строковый путь объекта файловой системы в зависимости от его типа. |
tag | String | Возвращает тег, присвоенный объекту (директории, папке или файлу). Этот тег можно использовать для идентификации объекта при отсле живании использования дискового пространства. |
DiskUsageObject
имеет три варианта использования:
directory(path: FileManager.SearchPathDirectory, tag: String)
Представляет системную директорию (определённую через FileManager.SearchPathDirectory
), например, директорию документов или кеша. Каждая директория может быть идентифицирована через заданный тег.
folder(path: String, tag: String)
Представляет папку с пользовательским путём (в виде строки). Позволяет отслеживать произвольные пользовательские директории на основе их путей и идентифицировать их через тег.
file(path: String, tag: String)
Представляет файл с конкретным путём. Как и в случае папок, файлы можно идентифицировать с помощью тега.
Чтобы проверить, что плагин подключён верно и действительно обрабатывает данные, установите для DiskUsage
в качестве параметра probability
1:
import OKTracer let diskUsageObjects: [DiskUsageObject] = [ .file(path: "/Users/guest/1.txt", tag: "1.txt"), .directory(path: .documentDirectory, tag: ".documentDirectory"), .folder(path: "/Users/guest/Downloads", tag: "Downloads"), .folder(path: NSHomeDirectory(), tag: "homeDirectory"), .folder(path: Bundle.main.bundlePath, tag: "mainBundle") ] let diskUsageConfiguration = DiskUsageConfiguration(autoStart: true, excluded: ["TracerStorage", "SplashBoard"], notifyIfEquals: false, maxDepth: 200, maxEntries: 400, difference: 10000, isRecursive: true, observeMode: .timer(interval: 300)) let features: [FeatureConfiguration] = [.diskUsage(probability: 1)] let items: [FeatureObject] = [.diskUsage(objects: diskUsageObject, configuration: diskUsageConfiguration)] let tracerService = TracerFactory.tracerService(token: "Ваш appToken", features: features, items: items) tracerService.start()