Возможности мониторинга плагина Astromkey для Android Gradle

Материал из Документация Ключ-АСТРОМ

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

Мониторинг действий пользователя

ЕдиныйАгент создает действия пользователя на основе компонентов пользовательского интерфейса, которые инициируют эти действия, и автоматически объединяет данные о действиях пользователя с другими данными мониторинга, такими как информация о веб-запросах и сбоях. ЕдиныйАгент продлевает время жизни действий пользователя, чтобы правильно объединять их с другими событиями, которые выполняются в фоновом потоке или сразу после действия пользователя.

Настроить мониторинг действий пользователя

Вы можете настроить мониторинг действий пользователя с помощью свойств timeoutи maxDuration. Все свойства, связанные с мониторингом действий пользователя, являются частью UserAction DSL , поэтому настраивайте их с помощью userActionблока .

astromkey {
    configurations {
        sampleConfig {
            userActions {
                // your user action monitoring configuration
            }
        }
    }
}

С помощью этого timeoutсвойства вы можете настроить время, в течение которого ЕдиныйАгент может добавлять другие события к вновь созданному действию пользователя. При обнаружении другого взаимодействия с пользователем ЕдиныйАгент прекращает добавлять события к действию пользователя предыдущего взаимодействия, независимо от настроенного timeoutзначения. Вместо этого ЕдиныйАгент добавляет события только к действию пользователя из текущего взаимодействия с пользователем.

По timeoutистечении периода времени ЕдиныйАгент проверяет, есть ли открытые события, и ждет завершения этих событий. С помощью maxDurationсвойства вы можете настроить максимальную продолжительность этих действий пользователя. Если открытое событие, например веб-запрос, все еще не завершено по истечении этого периода, ЕдиныйАгент удаляет эти события из действия пользователя и закрывает действие пользователя с соответствующим значением времени окончания.

Укажите значение для обоих свойств в миллисекундах. Значение свойства maxDurationдолжно быть равно или больше значения свойства timeout.

Свойство Значение по умолчанию Возможные значения
timeout 500 100 – 5000
maxDuration 60000 100 – 540000

timeoutДля каждого свойства и можно настроить только одно значение maxDuration, и эти значения должны соответствовать всем действиям пользователя на всех устройствах.

ЕдиныйАгент также сообщает о действиях пользователя, которые не содержат дочерних событий. Чтобы отказаться от таких действий пользователя, используйте emptyActionsсвойство.

Отключить мониторинг действий пользователя

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

astromkey {
    configurations {
        sampleConfig {
            userActions.enabled false
        }
    }
}

Датчики контроля действий пользователя

Плагин автоматически обрабатывает следующие слушатели и методы:

  • Android
    • android.view.View$OnClickListener
    • android.widget.AdapterView$OnItemClickListener
    • android.widget.AdapterView$OnItemSelectedListener
    • android.app.Activity.onOptionsItemSelected
    • android.view.MenuItem$OnMenuItemClickListener
  • AndroidX
    • androidx.viewpager.widget.ViewPager$OnPageChangeListener
    • androidx.swiperefreshlayout.widget.SwipeRefreshLayout$OnRefreshListener
  • Поддержка Android
    • android.support.v4.view.ViewPager$OnPageChangeListener
    • android.support.v4.widget.SwipeRefreshLayout$OnRefreshListener

Вы можете деактивировать определенные датчики через свойства DSL UserAction Sensor и настроить их внутри sensorsблока .

astromkey {
    configurations {
        sampleConfig {
            userActions {
                sensors {
                    // fine-tune the sensors if necessary
                }
            }
        }
    }
}

Именование действий пользователя

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

Слушатель или метод Оцениваемый компонент
android.view.View$OnClickListener

android.widget.AdapterView$OnItemClickListener

android.widget.AdapterView$OnItemSelectedListener

Атрибуты оцениваются в следующем порядке:
  1. android:contentDescriptionатрибут
  2. android:textатрибут для TextViewкомпонентов на основе
  3. Имя класса
android.app.Activity.onOptionsItemSelected

android.view.MenuItem$OnMenuItemClickListener

getTitleдля пунктов меню
androidx.viewpager.widget.ViewPager$OnPageChangeListener

androidx.swiperefreshlayout.widget.SwipeRefreshLayout$OnRefreshListener

android.support.v4.view.ViewPager$OnPageChangeListener

android.support.v4.widget.SwipeRefreshLayout$OnRefreshListener

Тип действия используется в качестве имени действия, так как компонент пользовательского интерфейса недоступен.

Маскировать действия пользователя

Плагин Ключ-АСТРОМ для Android Gradle версии 8.249+

По умолчанию имена действий пользователя получаются из заголовков элементов пользовательского интерфейса , например заголовков кнопок или пунктов меню. В редких случаях адреса электронной почты, имена пользователей или другая личная информация могут быть непреднамеренно включены в имена действий пользователя. Это происходит, когда эта информация включена в параметры, используемые для заголовков элементов управления, что приводит к именам действий пользователя, таким как Touch on Account 123456.

Если такая личная информация появляется в именах действий пользователя вашего приложения, включите маскирование действий пользователя. ЕдиныйАгент заменит все Touch on <control title>имена действий именем класса элемента управления, к которому прикоснулся пользователь, например:

  • Touch on Account 123456>Touch on Button
  • Touch on Transfer all amount>Touch on Switch
  • Touch on Account settings>Touch on ActionMenuItem

Вы можете включить маскирование действий пользователя с помощью namePrivacyсвойства UserAction DSL .

astromkey {
    configurations {
        sampleConfig {
            userActions {
                namePrivacy true
            }
        }
    }
}

Если вы хотите изменить имена только для определенных действий пользователя, используйте одну из следующих настроек:

  • Измените автоматически сгенерированные действия , чтобы изменить имена действий пользователя.
  • Установите правила именования (Настройки мобильного приложения > Правила именования ), чтобы настроить правила именования действий пользователя или правила извлечения.

Изменить действия пользователя

ЕдиныйАгент для Android создает действия пользователя на основе взаимодействия пользователей вашего приложения. Эти действия отличаются от настраиваемых действий и иногда называются автоматически сгенерированными действиями . Мы также называем их действиями пользователя .

Вы можете изменить или даже отменить действия пользователя.

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

Изменить конкретное действие пользователя

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

Метод Astromkey.modifyUserActionпринимает реализацию в UserActionModifierкачестве параметра, который предоставляет вам текущий изменяемый ModifiableUserActionобъект.

Разрешенные операции над этим объектом действий пользователя:

  • getActionName
  • setActionName
  • reportEvent
  • reportValue
  • reportError
  • ЕдиныйАгент для Android версии 8.241+ cancel

Вы можете изменить действие пользователя, только пока оно еще открыто. Если время действия действия пользователя истекло до того, как оно было изменено, изменение не имеет никакого эффекта. Мы рекомендуем вызывать Astromkey.modifyUserActionвнутри инструментированного метода прослушивателя и не вызывать этот метод из другого потока.

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

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int result = calc();
        // we use Java 8 language features here. You can also use anonymous classes instead of lambdas
        Astromkey.modifyUserAction(userAction -> {
            userAction.setActionName("Click on Calculate");
            userAction.reportValue("Calculated result", result);
        });
        showResult(result);
    }
});

Для пользовательского мобильного действия или мобильного действия пользователя, сгенерированного автоматически, максимальная длина имени составляет 250 символов.

Изменить любое действие пользователя

ЕдиныйАгент для Android версии 8.241+

Вы можете изменить действия пользователя через Astromkey.modifyUserAction. Однако вы можете сделать это только для определенного действия пользователя, и обычно вы должны знать, открыто ли это действие пользователя или нет.

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

Вы можете зарегистрировать обратный вызов, который вызывается для каждого действия пользователя. UserActionModifierустанавливается один раз при запуске ЕдиныйАгент с помощью AstromkeyConfigurationBuilder#withAutoUserActionModifierметода. После этого он вызывается каждый раз, когда ЕдиныйАгент создает действие пользователя. Он не вызывается для пользовательских действий .

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

Разрешены следующие операции:

  • getActionName
  • setName
  • reportEvent
  • reportValue
  • reportError
  • cancel
Astromkey.startup(this, new AstromkeyConfigurationBuilder("<YourApplicationID>", "<ProvidedBeaconUrl>")
    .withAutoUserActionModifier(modifiableAction -> {
        if (modifiableAction.getActionName().contains("account ID")) {
            // remove personal information from the user action name
            modifiableAction.setActionName("Touch on Account");
        }
    })
    .buildConfiguration());

Для пользовательского мобильного действия или мобильного действия пользователя, сгенерированного автоматически, максимальная длина имени составляет 250 символов.

Библиотека привязки данных Android

Плагин Astromkey для Android Gradle может управлять логикой событий и прослушивателями, которые определяются с помощью функции привязки данных . Если ваше приложение содержит код, аналогичный официальному примеру привязки прослушивателя , подключаемый модуль может определить правильный байт-код и обработать его.

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable name="task" type="com.android.example.Task" />
        <variable name="presenter" type="com.android.example.Presenter" />
    </data>
    <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent">
        <Button android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:onClick="@{() -> presenter.onSaveClick(task)}" />
    </LinearLayout>
</layout>

Определить обработчик событий через XML-атрибут

В следующем примере из документации Android показано, как можно определить обработчик событий с помощью XML-атрибутов.

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/button_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage" />
/** Called when the user touches the button */
public void sendMessage(View view) {
    // Do something in response to button click
}

Плагин Astromkey для Android Gradle не может определить взаимосвязь между кнопкой в ​​XML-файле макета и методом sendMessageв действии. Однако, когда ваше приложение использует библиотеку Appcompat и ваши действия получены из androidx.appcompat.app.AppCompatActivity, подключаемый модуль автоматически использует логику делегирования библиотеки Appcompat. Если вы не используете библиотеку Appcompat, вы должны вручную настроить эти методы обработчика событий, поскольку подключаемый модуль не может определить связь между байт-кодом и XML-файлом макета.

Мониторинг веб-запросов

Плагин Astromkey для Android Gradle может автоматически обрабатывать и помечать ваши веб-запросы. Для отслеживания веб-запросов ЕдиныйАгент добавляет x-astromkeyв веб-запрос заголовок HTTP с уникальным значением. Это необходимо для сопоставления данных мониторинга на стороне сервера с соответствующим мобильным веб-запросом.

Для HTTP(S)-запросов нельзя комбинировать автоматическое и ручное инструментирование веб-запросов. Однако вы можете использовать автоматическое инструментирование для HTTP(S)-запросов и ручное инструментирование для не-HTTP(S)-запросов, таких как запросы WebSocket или gRPC.

Настроить мониторинг веб-запросов

Все свойства, связанные с мониторингом веб-запросов, являются частью WebRequest DSL , поэтому настройте эти свойства с помощью webRequestsблока .

astromkey {
    configurations {
        sampleConfig {
            webRequests {
                // your web request monitoring configuration
            }
        }
    }
}

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

Отключить мониторинг веб-запросов

Вы можете полностью отключить мониторинг веб-запросов с помощью этого enabledсвойства. В этом случае все остальные свойства игнорируются, поэтому enabledво избежание путаницы укажите только свойство.

astromkey {
    configurations {
        sampleConfig {
            webRequests.enabled false
        }
    }
}

Датчики мониторинга веб-запросов

Поддерживаются следующие платформы HTTP:

  • HttpURLConnection
  • OkHttp : только версии 3 и 4
  • HTTP-клиент Apache: только встроенный в Android HTTP-клиент версии 1.

1

В Android устарела клиентская библиотека Apache HTTP (см. раздел Изменения в Android 6.0 и Изменения в Android 9.0 ), поэтому используйте другую структуру HTTP. Новый HTTP-клиент Apache версии 5 не поддерживается. Поддерживаются старые версии HTTP-клиента Apache, поскольку они предоставляют тот же интерфейс.

Если ваша библиотека веб-запросов основана на одной из этих поддерживаемых платформ, внутренние классы библиотеки инструментируются автоматически. Например, Retrofit версии 2 основан на OkHttp, поэтому все веб-запросы Retrofit обрабатываются автоматически.

Вы можете деактивировать определенные сенсоры через свойства WebRequest Sensor DSL и настроить их внутри sensorsблока .

astromkey {
    configurations {
        sampleConfig {
            webRequests {
                sensors {
                    // fine-tune the sensors if necessary
                }
            }
        }
    }
}

Мониторинг жизненного цикла

При мониторинге жизненного цикла ЕдиныйАгент собирает следующие данные:

  • Событие запуска приложения : измеряет промежуток времени от Application.onCreate()до Activity.onPostResume()первого действия. Событие запуска приложения не фиксируется, если приложение запускается в фоновом режиме и не сразу открывает действие или если автоматическое внедрение отключено .
  • Отображение активности : измеряет временной интервал от Activity.onCreate(Bundle)до Activity.onPostResume()и сообщает время каждого введенного состояния жизненного цикла активности.
  • Повторное отображение действия : измеряет время, необходимое для повторного отображения ранее созданного действия, и сообщает время каждого состояния жизненного цикла действия, которое было введено до тех пор, пока действие снова не станет видимым.

Настройка мониторинга жизненного цикла

События жизненного цикла либо являются частью существующих действий пользователя, либо создают новое действие пользователя и присоединяют к нему действие жизненного цикла отображения или повторного отображения. Все свойства, связанные с мониторингом жизненного цикла, являются частью Lifecycle DSL , поэтому настраивайте их с помощью lifecycleблока .

astromkey {
    configurations {
        sampleConfig {
            lifecycle {
                // your lifecycle monitoring configuration
            }
        }
    }
}

Отключить мониторинг жизненного цикла

Вы можете отключить мониторинг жизненного цикла с помощью enabledсвойства. В этом случае все остальные свойства игнорируются, поэтому укажите только свойство enabled.

astromkey {
    configurations {
        sampleConfig {
            lifecycle.enabled false
        }
    }
}

Датчики мониторинга жизненного цикла

Вы можете деактивировать определенные датчики через свойства DSL Lifecycle Sensor и настроить их внутри sensorsблока .

astromkey {
    configurations {
        sampleConfig {
            lifecycle {
                sensors {
                    // fine-tune the sensors if necessary
                }
            }
        }
    }
}

Отчеты о сбоях

ЕдиныйАгент фиксирует все необработанные исключения и ошибки и немедленно отправляет отчет о сбое на сервер. Отчет о сбое Android включает время возникновения и полную трассировку стека исключения.

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

Вы можете отключить отчеты о сбоях с помощью crashReportingсвойства.

astromkey {
    configurations {
        sampleConfig {
            crashReporting false
        }
    }
}

Обнаружение ярости

Плагин Astromkey для Android Gradle версии 8.231+

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

ЕдиныйАгент может отслеживать только те события сенсорного экрана, которые обрабатываются компонентом Activity. Например, ЕдиныйАгент не может отслеживать компоненты пользовательского интерфейса Android, которые имеют собственную логику обработки сенсорного экрана Dialogи DreamService.

Вы можете деактивировать обнаружение касания ярости, используя detectRageTapsсвойство BehavioralEvents DSL .

astromkey {
    configurations {
        sampleConfig {
            behavioralEvents {
                detectRageTaps false
            }
        }
    }
}

Мониторинг местоположения

Если этот параметр включен, ЕдиныйАгент добавляет захваченные позиции конечных пользователей к данным мониторинга. Чтобы защитить конфиденциальность конечного пользователя, ЕдиныйАгент фиксирует только три дробных цифры GPS-координат.

Вы можете активировать функцию мониторинга местоположения с помощью locationMonitoringсвойства.

astromkey {
    configurations {
        sampleConfig {
            locationMonitoring true
        }
    }
}

ЕдиныйАгент собирает только те данные о местоположении, которые уже обработаны в вашем приложении. ЕдиныйАгент не запрашивает дополнительные данные о местоположении из Android SDK. Если ваше приложение не обрабатывает данные о местоположении, эта функция не включена. Когда мониторинг местоположения отключен или информация о местоположении недоступна, Ключ-АСТРОМ использует IP-адреса для определения местоположения пользователя.

Плагин поддерживает следующий прослушиватель местоположения:

  • android.location.LocationListener