Русский
Русский
English
Статистика
Реклама

Встраиваем аналитику от Huawei в Android приложение

image


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


Вот полный список статей из цикла:


  1. Создаём аккаунт разработчика, подключаем зависимости, подготавливаем код к внедрению. тык
  2. Встраиваем Huawei Analytics. вы тут
  3. Используем геолокацию от Huawei.
  4. Huawei maps. Используем вместо Google maps для AppGallery.

Как должен выглядеть код в уже готовом проекте


Начнём с аналитики. И исходить будем из того, что она у вас спрятана за примерно такой абстракцией:


interface Analytics {    fun send(event: AnalyticsEvent)}interface AnalyticsEvent {    val key: String    val data: Map<String, Any>}fun Map<String, Any>.toBundle() =    Bundle().apply {        forEach { (key, value) ->            when (value) {                is String -> putString(key, value)                is Int -> putInt(key, value)                is Boolean -> putBoolean(key, value)                is Double -> putDouble(key, value)                is Float -> putFloat(key, value)                else -> throw IllegalArgumentException("Unknown data type: ${value::class.simpleName}")            }        }    }open class SimpleEvent(override val key: String) : AnalyticsEvent {    override val data: Map<String, Any> = hashMapOf()    override fun toString(): String = "AnalyticsEvent { key = $key, data = $data }"}open class ParamsEvent(key: String, vararg params: Pair<String, Any>): SimpleEvent(key) {    override val data = params.toMap()}class EventOpenSomeScreen : SimpleEvent("screen_some_screen")

Соответственно, где требуется какое-то событие отправить, вы делаете что-то такое:


@Injectlateinit var analytics: Analytics...analytics.send(EventOpenSomeScreen())

Используем разные реализации аналитики


Если всё вышеописанное верно, то подставлять разные реализации аналитики в разных сборках проще простого.


  1. Указываем, что для huawei flavor-а мы используем одну библиотеку, а для google другую:

dependencies {  huaweiImplementation 'com.huawei.agconnect:agconnect-core:1.3.1.300'  huaweiImplementation 'com.huawei.hms:hianalytics:5.0.0.301'  googleImplementation 'com.google.firebase:firebase-analytics:17.2.3'}

  1. В DI биндим для типа Analytics экземпляр класса AnalyticsImpl. Сам же AnalyticsImpl у нас будет в двух вариантах. Один в папке src/huawei/kotlin/com/example и выглядеть так:

class AnalyticsImpl(context: Context) : Analytics {    private val analytics = HiAnalytics.getInstance(context)    override fun send(event: AnalyticsEvent) {        analytics.onEvent(event.key, event.data.toBundle())    }}

Другой в папке src/google/kotlin/com/example:


class AnalyticsImpl(context: Context) : Analytics {  private val firebaseAnalytics = FirebaseAnalytics.getInstance(context)  override fun send(event: AnalyticsEvent) {      firebaseAnalytics.logEvent(event.key, event.data.toBundle())  }}

Вот собственно и всё с аналитикой. API библиотек очень похожи и никаких проблем не возникает.


Проверяем, что всё работает


Также, очень удобно можно проверить, что Huawei аналитика работает. Для этого надо:


  1. Подсоединить девайс к компьютеру.
  2. Выполнить в консоли adb shell setprop debug.huawei.hms.analytics.app ТУТ_APPLICATION_ID_ВАШЕГО_ПРИЛОЖЕНИЯ
  3. Открыть консоль разработчика в браузере, перейти в AppGallery Connect -> Мои приложения -> Выбрать приложение -> Раздел "Разработка" -> Управление -> Отладка приложения.
  4. Теперь отправленные из приложения события вы будете видеть в реальном времени прямо на сайте.
  5. Чтобы отключить режим отладки выполните adb shell setprop debug.huawei.hms.analytics.app .none.

Вот так режим отладки выглядит в браузере:


image


Дальше геолокация


С аналитикой мы разобрались, в следующей статье покажем как встроить определение геолокации от Huawei в приложение, которое уже использует аналог от Google.


Весь код, который есть в этом цикле статей вы можете посмотреть в репозитории на GitHub. Вот ссылка.

Источник: habr.com
К списку статей
Опубликовано: 06.10.2020 18:23:53
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Gradle

Java

Kotlin

Разработка мобильных приложений

Разработка под android

Android development

Huawei mobile services

Google mobile services

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru