FAQ Mobile SDK

Часто задаваемые вопросы о Mobile SDK

Что такое SDK?

Набор методов и библиотек, предназначенных для встраивания в мобильное приложение заказчика. Он написан на языке Java для Android и Objective-C/С для iOS.

В какое приложение можно встроить SDK?

В любое нативное приложение под операционной системой (ОС) Android или iOS. Также есть примеры интеграции Mobile SDK в мобильные кроссплатформенные приложения на Flutter (iOS/Android).

На каких версиях ОС работает SDK?

Минимально поддерживаемые версии:

  • Android 7 (API 24)

  • iOS 11

Какие версии ОС гарантированно поддерживаются разработчиком SDK?

SDK для Android проверяется на всем списке поддерживаемых ОС, а также частично проверяется на Huawei Harmony OS, Xiaomi Hyper OS.

SDK для iOS проверяется на всех поддерживаемых версиях ОС.

Информация об особенностях работы Mobile SDK на разных устройствах и операционных системах, включая необходимые разрешения и настройки, представлена в документации на Mobile SDK.

Сколько весит SDK?

В зависимости от версии Mobile SDK примерные значения составляют:

  • ~ 400 кб для Android

  • ~ 600 кб для iOS

Тормозит ли SDK работу приложения?

Нет, при условии выполнения задач на второстепенных потоках. В SDK предусмотрены вызовы на основной поток лишь для тех параметров, которым это необходимо.

Есть ли в Mobile SDK антивирус?

Mobile SDK не выполняет сканирование и обнаружение зараженных приложений.

Зависит ли точность сбора статистических данных от того, где размещен код SDK в приложении?

Правильное размещение кода SDK влияет на точность некоторых параметров, особенно тех, которые связаны со временем выполнения различных операций в приложении.

Например, параметр, измеряющий время загрузки SDK, должен быть инициализирован как можно раньше: AppDurationStartTime рассчитывает промежуток времени между запуском приложения (AppProcStartTime) и моментом инициализации SDK. Чем раньше будет выполнена инициализация SDK, тем точнее будет зафиксировано время запуска приложения – начиная с момента нажатия на иконку приложения и заканчивая передачей управления приложению.

Кто и как начинает работу с SDK?

Инициализацию и управление работой SDK осуществляет интегратор (или клиентское приложение).

Как организовать процесс инициализации SDK?

Рекомендуется интегрировать вызовы SDK таким образом, чтобы они выполнялись в ответ на определенные события в приложении. Хотя существует возможность вызова SDK по таймеру, этот способ менее эффективен и не рекомендуется. Оптимальным вариантом является привязка инициализации SDK к конкретным действиям пользователя или системным событиям.

После инициализации, продолжает ли SDK собирать информацию по устройству в течение всей сессии?

SDK не собирает никаких данных без прямого запроса от родительского приложения. Пока приложение не инициирует выполнение каких-либо действий через SDK, тот остается неактивным.

Может ли SDK в процессе сессии выявлять новые события?

SDK фиксирует параметры, описывающие состояние устройства на момент каждого обращения к нему. С каждым новым запросом набор данных может обновляться в зависимости от изменений, произошедших на устройстве. Если между вызовами произошли значимые события (например, установка новых приложений или использование определенных функций), эти изменения будут отражены в новых данных, возвращаемых SDK.

Что представляет собой результат работы SDK?

Результатом работы SDK является файл в формате JSON. Этот файл содержит набор пар "ключ-значение", где ключ соответствует названию параметра, а значение – результат его вычисления. Полученный JSON-файл анализируется на стороне Backend-сервиса для выявления информации об устройстве с возможными аномалиями.

Как выполняется отправка данных из приложения?

Так как в SDK отсутствует сетевой слой, передача JSON выполняется через сетевой уровень клиентского приложения. Отчет может быть отправлен на сервер с использованием средств самого приложения, таких как библиотека okhttp (например, https://github.com/square/okhttp) или другие аналогичные библиотеки для обработки HTTP-запросов. На платформе iOS для этой цели можно воспользоваться инструментом NSURLSession.

Как и где устанавливается адрес сервера для отправки отчета?

Интегратор настраивает выбранный HTTP-клиент, задавая URL для отправки данных.

Зашифрован ли JSON-отчет?

JSON-отчет не зашифрован, однако он защищен от подмены данных. Защита от подмены обеспечивается контролем целостности данных.

При необходимости шифрование может быть реализовано на стороне клиентского приложения, если это требуется для передачи данных на сервер.

Как долго формируется отчет и от чего это зависит?

Время формирования отчета варьируется в зависимости от типа отчета и характеристик устройства, на котором работает приложение с SDK. Более детальная информация представлена в документации.

В среднем, на современных устройствах целевое время составляет до 300 миллисекунд, а на устройствах среднего ценового сегмента – от 300 до 1000 миллисекунд.

Как проверить работу SDK?

Чтобы проверить работоспособность SDK, выполните интеграцию согласно документации из комплекта поставки SDK.

Можно использовать демонстрационное приложение, которое входит в комплект поставки SDK.

Где можно посмотреть все параметры?

Все параметры, с их подробным описанием, перечислены в документации, которая включена в комплект поставки Mobile SDK.

Какой объем занимает JSON-отчет, формируемый SDK?

В текущей версии SDK размер JSON-отчета может составлять 12 000 символов и более.

Сохраняется ли на устройстве JSON-отчет, сформированный SDK?

SDK не хранит JSON-отчеты на устройстве, а передает их родительскому приложению.

Возможна ли разбивка JSON-отчета для отправки частями?

В текущей версии SDK отсутствуют средства для разделения JSON-отчета. Эту задачу можно решить средствами родительского приложения.

Что удостоверяет целостность JSON-отчета SDK?

Целостность JSON-отчета обеспечивается подписью набора данных.

Какой алгоритм применяется для шифрования подписи JSON-отчета?

Используется алгоритм HMAC-SHA256.

Какие меры предпринять, чтобы избежать проблем с Google Protect на устройствах с Android?

Необходимо следовать рекомендациям Google Protect: https://support.google.com/googleplay/answer/2812853?hl=ru.

Также рекомендуется использовать версию сборки, совместимую с Google Protect, которая включена в комплект поставки Mobile SDK.

Что предпринять, если нет возможности использовать определенные разрешения?

Если интегратор не желает или не может добавить необходимые разрешения (permissions), указанные в документации SDK, он может их не добавлять. Однако параметры, зависящие от этих разрешений, могут отображать неверную информацию либо вообще не отображаться.

Может ли SDK вызывать крах приложения и при каких условиях?

SDK не должна приводить к краху и принудительному завершению работы основного приложения.

Как и зачем передавать внешние параметры в SDK?

Внешние параметры применяются в тех случаях, когда необходимо предоставить клиенту возможность реализовать собственную логику для получения значений метрик.

К примеру, они используются для кросс-канальной интеграции с системой сессионного мониторинга, подробности описаны в документации на Mobile SDK.