Интеграция с помощью LLM (ИИ) — Используйте следующий запрос:
Добавьте Tenjin SDK в мой проект с помощью: https://raw.githubusercontent.com/tenjin/sdk-llm-guides/main/guides/android/llm-guide.md
Начните работу с Android SDK #
Tenjin Android SDK позволяет пользователям отслеживать события и установки в своих приложениях для Android. Чтобы узнать больше о Tenjin и предлагаемых нами продуктах, посетите сайт https://www.tenjin.com.
- Ознакомьтесь с нашими Примечаниями к выпуску, чтобы увидеть подробную историю изменений в разных версиях.
- Мы рекомендуем использовать последнюю версию Android Studio.
- Для интеграции с Unity посетите сайт https://github.com/tenjin/tenjin-unity-sdk.
- По всем вопросам и за поддержкой обращайтесь по адресу: support@tenjin.com.
Базовая интеграция #
Ручная установка #
Используйте шаги, перечисленные ниже в разделе ‘Android Studio’.’
Maven #
Если вы используете Maven, добавьте реализацию com.tenjin:android-sdk:VERSION в свои зависимости Gradle и добавьте mavenCentral() в список репозиториев исходного кода, если его там ещё нет.
Android Studio #
- Скачайте последнюю версию SDK Android здесь.
- Добавьте SDK Tenjin в свой проект Android Studio. Перейдите в "Навигатор проектов" в Android Studio. Выберите пункт
Проектв "Навигаторе проектов". Вы найдёте папкуlibsв модулеappвашего проекта Android Studio. - Вам необходимо добавить файл
tenjin.jarилиtenjin.aarв папкуlibs.
- В проекте Android Studio в модуле
appвыберите файлbuild.gradle, и добавьте следующее в блок dependencies:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
implementation files('libs/tenjin.aar')
}> У нас есть демонстрационный проект — [tenjin-android-sdk-demo][31], который демонстрирует интеграцию tenjin-android-sdk. Вы можете использовать этот проект в качестве примера, чтобы понять, как интегрировать tenjin-android-sdk.
Магазин Google Play или Amazon #
Если вы распространяете свои приложения в Google Play Store или магазине Amazon, выполните следующие начальные настройки.
Разрешение #
Tenjin SDK требует следующих разрешений:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Required to get network connectivity (i.e. wifi vs. mobile) -->Службы Google Play требуют, чтобы все приложения уровня API 32 (Android 13), использующие advertising_id (Android Advertising ID (AAID)), объявляли разрешение Google Play Services AD_ID (показано ниже) в своем файле манифеста.
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>Рекламный идентификатор Android (AAID) и реферер установки #
Добавьте Android Advertising ID (AAID) и Install Referrer, добавьте их в файл build.gradle.
dependencies {
implementation 'com.google.android.gms:play-services-ads-identifier:{version}'
implementation 'com.android.installreferrer:installreferrer:{version}'
}Чтобы иметь возможность собирать данные о реферере установки Meta, добавьте следующие запросы в свой манифест Android:
<queries>
<package android:name="com.facebook.katana" />
</queries>
<queries>
<package android:name="com.instagram.android" />
</queries>Далее добавьте следующее значение в файл strings.xml:
<string name="facebook_app_id" translatable="false">YOUR_META_APP_ID</string>App Store #
По умолчанию в качестве магазина приложений используется unspecified. Измените значение параметра «app store» на googleplay или amazon в зависимости от вашего приложения.
AndroidManifest.xml:
<meta-data
android:name="TENJIN_APP_STORE"
android:value="googleplay" />setAppStore():
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
instance.setAppStore(TenjinSDK.AppStoreType.googleplay);Параметры магазина приложений #
TenjinSDK.AppStoreType.googleplay // Google Play App Store
TenjinSDK.AppStoreType.amazon // Amazon AppStore
TenjinSDK.AppStoreType.other // OtherИнициализация приложения #
- Получите свой
SDK_KEYна странице вашего приложения. Примечание:SDK_KEYявляется уникальным для каждого вашего приложения. Для одного и того же приложения можно создать до 3 ключей.

- В Activity импортируйте Tenjin:
import com.tenjin.android.TenjinSDK; - В методе
onResumeвашего основного классаActivityдобавьте следующую строку кода:
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
instance.connect();ПРИМЕЧАНИЕ: Если в вашем приложении предусмотрена логика запроса согласия пользователя между onCreate и onResume, используйте onCreate вместо onResume для инициализации Tenjin SDK, поскольку пользователи, не давших согласия, не будут отслеживаться в методе onResume.
ПРИМЕЧАНИЕ: Убедитесь, что вы реализуете этот код в каждом методе onResume, а не только при первом запуске приложения.
Другой магазин Android #
Если вы распространяете свои приложения за пределами Google Play Store или Amazon store (другие магазины Android), выполните следующие начальные настройки.
Разрешение #
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Required to get network connectivity (i.e. wifi vs. mobile) -->Google Play Services требует, чтобы все приложения уровня API 32 (Android 13), использующие advertising_id (Android Advertising ID (AAID)), объявляли в своём файле манифеста разрешение AD_ID для Google Play Services (см. ниже).
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>Рекламный идентификатор Android (AAID) и реферер установки #
Добавьте Android Advertising ID (AAID) и Install Referrer, добавьте их в файл build.gradle.
dependencies {
implementation 'com.google.android.gms:play-services-ads-identifier:{version}'
implementation 'com.android.installreferrer:installreferrer:{version}'
}Если вы используете рекламную сеть, которая использует IMEI для таргетинга, вам необходимо включить следующие разрешения. (Если вы распространяете свои приложения в Google Play, пожалуйста, НЕ добавляйте это разрешение.)
<uses-permission android:name="android.permission.READ_PHONE_STATE" />OAID #
Tenjin поддерживает продвижение вашего приложения в других магазинах приложений Android с помощью Android OAID. У нас есть следующие требования для интеграции библиотек OAID.
MSA OAID #
MSA OAID — это рекламный идентификатор для устройств, произведенных в Китае, который предоставляется организацией MSA (Mobile Security Alliance). Для интеграции с библиотекой MSA, загрузите следующие файлы: oaid\_sdk\_1.0.25.aar и supplierconfig.json.
Добавьте следующее в файл gradle вашего проекта:
implementation files('libs/oaid_sdk_1.0.25.aar')Обязательно скопируйте файл supplierconfig.json в папку assets вашего проекта.
Huawei OAID #
Для стран за пределами Китая вы можете получить OAID с помощью библиотеки, предоставленной компанией Huawei. Для интеграции с библиотекой Huawei OAID добавьте в свой проект следующий код:
В файле build.gradle добавьте адрес Maven для SDK Huawei:
allprojects {
repositories {
google()
maven { url 'https://developer.huawei.com/repo/' }
}
}dependencies {
implementation 'com.huawei.hms:ads-identifier:{version}'
}Huawei Install Referrer #
Если вы продвигаете своё приложение через Huawei App Gallery, добавьте как SDK Huawei OAID, указанный выше, так и Install Referrer.
dependencies {
implementation 'com.huawei.hms:ads-identifier:{version}'
implementation 'com.huawei.hms:ads-installreferrer:{version}'
}
App Store #
По умолчанию в качестве магазина приложений используется не указан. Измените значение параметра «магазин приложений» на другой.
AndroidManifest.xml:
<meta-data
android:name="TENJIN_APP_STORE"
android:value="other" />setAppStore():
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
instance.setAppStore(TenjinSDK.AppStoreType.other);Инициализация приложения #
- Получите свой
SDK_KEYна странице вашего приложения. Примечание:SDK_KEYявляется уникальным для каждого вашего приложения. Для одного и того же приложения можно создать до 3 ключей.

- В Activity импортируйте Tenjin:
import com.tenjin.android.TenjinSDK; - В методе
onResumeвашего основного классаActivityдобавьте следующую строку кода:
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
instance.connect();ПРИМЕЧАНИЕ: Обязательно внедрите этот код в каждый , а не только при первом запуске приложения. Если мы заметим, что вы не следуете нашей рекомендации, мы не сможем предоставить вам надлежащую поддержку, либо ваш аккаунт может быть заблокирован.onResume
Настройки Proguard #
-keep class com.tenjin.** { *; }
-keep public class com.google.android.gms.ads.identifier.** { *; }
-keep public class com.google.android.gms.common.** { *; }
-keep public class com.android.installreferrer.** { *; }
-keep class * extends java.util.ListResourceBundle {
protected java.lang.Object[][] getContents();
}
# Keep the signatures that Gson/TypeToken rely on
-keepattributes Signature
-keepattributes *Annotation*
# General Gson/TypeToken protection
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeTokenНе затуманивайте классы oaid:
-keep class XI.CA.XI.**{*;}
-keep class XI.K0.XI.**{*;}
-keep class XI.XI.K0.**{*;}
-keep class XI.xo.XI.XI.**{*;}
-keep class com.asus.msa.SupplementaryDID.**{*;}
-keep class com.asus.msa.sdid.**{*;}
-keep class com.bun.lib.**{*;}
-keep class com.bun.miitmdid.**{*;}
-keep class com.huawei.hms.ads.identifier.**{*;}
-keep class com.samsung.android.deviceidservice.**{*;}
-keep class com.zui.opendeviceidlibrary.**{*;}
-keep class org.json.**{*;}
-keep public class com.netease.nis.sdkwrapper.Utils {public <methods>;}Если вы используете библиотеки Huawei, вы можете воспользоваться этими настройками:
-keep class com.huawei.hms.ads.** { *; }
-keep interface com.huawei.hms.ads.** { *; }Дополнительная интеграция #
GDPR #
Общий регламент по защите данных (ЕС) (GDPR) - это регламент в законодательстве ЕС о защите данных и конфиденциальности в Европейском союзе (ЕС) и Европейской экономической зоне (ЕЭЗ).
При первом запуске приложения необходимо получить согласие пользователя на отслеживание, а затем записать результат в checkOptInValue() . После этого можно выполнить интеграцию, как показано ниже. Если вашему приложению не требуется соответствие требованиям GDPR, просто пропустите весь этот раздел.
В рамках обеспечения соответствия требованиям GDPR с помощью SDK Tenjin вы можете разрешить или запретить участие устройств/пользователей, а также выбрать, для каких конкретных параметров, связанных с устройствами, следует разрешить или запретить участие. Функция optOut() не будет отправлять никаких запросов API в Tenjin, и мы не будем обрабатывать никакие события.
Чтобы отказаться от участия/отказаться от участия:
import com.tenjin.android.TenjinSDK;
public class TenjinDemo extends ActionBarActivity {
@Override
public void onResume() {
//standard code
super.onResume()
//Integrate TenjinSDK connect call
String apiKey = " ";
TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);
boolean userOptIn = checkOptInValue();
if (userOptIn) {
instance.optIn();
}
else {
instance.optOut();
}
instance.connect();
//Your other code...
//...
}
protected boolean checkOptInValue(){
// check opt-in value
// return true; // if user opted-in
return false;
}
}Чтобы включить или отключить определенные параметры, связанные с устройством, можно использовать optInParams() или optOutParams().
Функция optInParams()будет отправлять только те параметры, связанные с устройством, которые указаны.Функция optOutParams()будет отправлять все параметры, связанные с устройством, за исключением указанных.- Обратите внимание, что для правильного отслеживания устройств в системе Tenjin нам необходим следующий параметр. Если обязательный параметр отсутствует, событие не будет обработано или записано.
advertising_id
- Если вы нацелены на рекламные сети, использующие IMEI и/или OAID, необходимо указать следующие параметры:
imeioaid
- Если вы планируете использовать Google AdWords, эти параметры обязательны:
platformos_versionapp_versionlocaledevice_modelbuild_idadvertising_id
Если вы хотите получить только определенные параметры, связанные с устройством, используйте optInParams(). В приведенном ниже примере мы будем использовать только следующие параметры, связанные с устройством: ip_address, advertising_id, limit_ad_tracking и referrer.
String apiKey = " ";
TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);
String[] optInParams = {"ip_address", "advertising_id", "limit_ad_tracking", "referrer"};
instance.optInParams(optInParams);
instance.connect();Если вы хотите отправить ВСЕ параметры, за исключением определённых параметров, связанных с устройством, используйте optOutParams(). В приведённом ниже примере мы отправим ВСЕ параметры, связанные с устройством, за исключением:
String apiKey = " ";
TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);
String[] optOutParams = {"locale", "timezone", "build_id"};
instance.optOutParams(optOutParams);
instance.connect();Включение/выключение с помощью CMP #
Вы можете автоматически отказаться от участия или отказаться от участия, используя свои согласия CMP (цель 1), которые уже сохранены в устройстве пользователя. Метод возвращает булево значение, чтобы сообщить вам о том, был ли пользователь согласен или нет.
optInOutUsingCMP()
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
optInOut = instance.optInOutUsingCMP(); Параметры, связанные с устройством #
| Параметр | Описание |
|---|---|
| ip_адрес | IP-адрес |
| рекламный идентификатор | Идентификатор устройства |
| limit_ad_tracking | отключено отслеживание рекламы |
| оаид | Открытый рекламный идентификатор |
| imei | IMEI устройства |
| платформа | Платформа |
| реферер | Источник перехода при установке из Google Play |
| os_version | версия операционной системы |
| устройство | название устройства |
| производитель_устройства | производитель оборудования |
| модель устройства | модель устройства |
| brand_device | марка устройства |
| устройство_продукт | продукт для устройств |
| перевозчик | оператор мобильной связи |
| тип_соединения | мобильная связь или Wi-Fi |
| ширина_экрана | ширина экрана устройства |
| высота экрана | высота экрана устройства |
| os_version_release | версия операционной системы |
| build_id | идентификатор сборки |
| локаль | локаль устройства |
| страна | регион, страна |
| часовой пояс | часовой пояс |
События покупки #
Чтобы понять поведение пользователей в отношении доходов и покупок, разработчики могут отправлять события transaction в Tenjin. Tenjin проверит за вас квитанции transaction. Обратите внимание, что в настоящее время мы поддерживаем только транзакции IAP из Google Play.
ВАЖНО: Вам необходимо добавить открытый ключ вашего приложения в панель управления Tenjin (на странице ‘Редактировать’ приложения). Вы можете получить свой открытый ключ RSA, закодированный в Base64, в Консоли разработчика Google Play \> Выберите свое приложение > Монетизация > Настройка монетизации > Биллинг Google Play > Лицензирование: Открытый ключ RSA, закодированный в Base64. Обратите внимание, что для Android в настоящее время мы поддерживаем только транзакции IAP из Google Play.

После ввода открытого ключа в приборную панель Tenjin для вашего приложения вы можете воспользоваться приведенным ниже методом Tenjin SDK:
public void transaction(String productId, String currencyCode, int quantity, double unitPrice, String purchaseData, String dataSignature)Пример:
public void sendPurchaseEvent(Purchase purchase, Double price, String currencyCode) {
String sku = purchase.getSku();
String purchaseData = purchase.getOriginalJson();
String dataSignature = purchase.getSignature();
TenjinSDK instance = getTenjinInstance();
instance.transaction(sku, currencyCode, 1, price, purchaseData, dataSignature);
}Вы можете проверить, работает ли проверка IAP, с помощью нашего инструмента для тестирования данных устройств в режиме реального времени. Вы должны увидеть поступающее событие в режиме реального времени:
Обязательно ‘подтвердите’ факт покупки, прежде чем отправлять данные в Tenjin. Более подробную информацию можно найти здесь.
Выберите один из вариантов комиссии с выручки App Store — 0%, 15% или 30% — с помощью нашей новой настройки. Последовательность действий следующая:
- Перейдите в раздел «Настройки» –> «Приложения»
- Нажмите на приложение, для которого вы хотите его изменить
- В разделе ‘Комиссия App Store’ нажмите ‘Изменить’.’
- Выберите 30%, 15% или 0% в качестве желаемой комиссии магазина приложений.
- Выберите дату начала и дату окончания (или вы можете оставить дату окончания пустой, если вам не нужна дата окончания).
- Нажмите «Сохранить» (примечание: комиссия может применяться только к датам, наступающим в будущем, а не к прошлым датам. Поэтому, пожалуйста, установите дату начала, начиная с даты внесения изменений и далее)
Amazon AppStore
Для проверки чека в AppStore в Amazon требуются параметры receiptId и userId.
ВАЖНО: Вам необходимо добавить общий ключ вашего приложения Amazon в панель управления Tenjin. Общий секретный ключ можно найти в разделе "Общий ключ" вашей учетной записи разработчика в учетной записи Amazon Appstore
Нестандартные события #
ПРИМЕЧАНИЕ: Событие инициализации connect() должно выполняться до отправки любых пользовательских событий.
ВАЖНО: Ограничьте названия пользовательских событий до 80 символов. Не превышайте 500 уникальных названий пользовательских событий.
Вы можете использовать Tenjin SDK для передачи пользовательского события: eventWithName(String name).
Пользовательские взаимодействия с вашим приложением могут быть привязаны к уровню затрат из каждого источника приобретения, который вы используете через сервис Tenjin. Вот пример использования:
String apiKey = <SDK_KEY>;
TenjinSDK instance = TenjinSDK.getInstance(this, apiKey);
//Integrate a custom event with a distinct name - ie. swiping right on the screen
instance.eventWithName("swipe_right");Пользовательские события со значениями #
Вы можете использовать Tenjin SDK для передачи пользовательского события с целочисленным значением: eventWithNameAndValue(String name, int value).
Передача целочисленного значения с названием события позволяет маркетологам суммировать и отслеживать средние значения, переданные для данной метрики, в панели управления Tenjin. Если вы планируете использовать DataVault, эти значения можно использовать для вывода дополнительных метрик, которые могут оказаться полезными.
String sdkKey = <SDK_KEY>;
TenjinSDK.instance = TenjinSDK.getInstance(this, sdkKey);
//Integrate a custom event with a distinct name and value - ie. paying 100 virtual coins for an item
instance.eventWithNameAndValue("item", 100);Используя приведенный выше пример, приборная панель Tenjin просуммирует и усреднит значения для всех событий с именем item.
Имейте в виду, что это событие не сработает, если переданное значение не является целым числом.
//Integrate a custom event with a distinct name and value - ie. paying 100 virtual coins for an item
instance.eventWithNameAndValue("item", "1");Интеграция между серверами #
Tenjin предлагает интеграцию «сервер-сервер». Это позволяет отправлять события, связанные с установкой и последующими действиями, напрямую с ваших серверов на серверы Tenjin без необходимости интеграции SDK.
Параметр App Subversion для A/B-тестирования (требуется DataVault) #
Если вы проводите A/B-тестирование и хотите отразить различия в отчётах, мы можем добавить числовое значение к версии вашего приложения с помощью метода appendAppSubversion(). Например, если версия вашего приложения 1.0.1, и вы установите appendAppSubversion(8888), то версия приложения будет отображаться как 1.0.1.8888.
Эти данные появятся в DataVault, где вы сможете запускать отчеты, используя значения субверсии приложения.
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
instance.appendAppSubversion(8888);
instance.connect();Кампании LiveOps #
Tenjin поддерживает получение информации об атрибуции пользователей, например, о источниках рекламной сети и кампании, с помощью SDK. Это позволит разработчикам собирать и анализировать данные атрибуции на уровне пользователей в режиме реального времени. Ниже приведены возможные сценарии использования Tenjin LiveOps Campaigns:
- Если у вас есть собственный инструмент для анализа данных, функция обратного вызова S2S позволит вам сопоставить данные атрибуции с вашими внутриигровыми данными на уровне отдельного устройства.
- Отображайте разный контент приложения в зависимости от источника трафика пользователя. Например, если пользователь А привлечен через органический трафик, а пользователь В — через Meta, и пользователь В, скорее всего, будет более активно взаимодействовать с вашим приложением, то после установки приложения пользователю следует показать специальное предложение внутри игры. Если вы хотите обсудить более конкретные сценарии использования, напишите нам по адресу support@tenjin.com.
Подробную информацию об использовании LiveOps можно найти здесь.
Идентификатор пользователя клиента #
Вы можете задавать и получать идентификатор пользователя клиента, чтобы отправлять его в качестве параметра в событиях.
.setCustomerUserId(userId: "user_id")
.getCustomerUserId()
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
instance.setCustomerUserId(userId: "user_id");
userId = instance.getCustomerUserId(); Идентификатор установки аналитики #
Вы можете получить идентификатор аналитика, который генерируется случайным образом и сохраняется в локальном хранилище устройства. getAnalyticsInstallationId()
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
analyticsId = instance.getAnalyticsInstallationId; Профиль пользователя — LiveOps Metrics #
SDK Tenjin Android автоматически отслеживает показатели вовлеченности пользователей, что помогает вам понять поведение игроков и оценить их пожизненную ценность. Эти показатели собираются автоматически, и к ним можно получить доступ программным способом.
Автоматическое отслеживание #
SDK автоматически отслеживает:
- Показатели сеанса: Количество сеансов, продолжительность, даты начала и окончания сеансов
- Покупки в приложениях (IAP): Количество транзакций, выручка по валютам, идентификаторы приобретенных товаров
- Доходы от рекламы (ILRD): Доход на уровне показов от поддерживаемых рекламных сетей
Получение данных профиля пользователя #
Получить объект полного профиля #
Возвращает объект UserProfileData со всеми показателями:
import com.tenjin.android.TenjinSDK;
import com.tenjin.android.userprofile.UserProfileData;
TenjinSDK instance = TenjinSDK.getInstance(this, "<SDK_KEY>");
UserProfileData profile = instance.getUserProfile();
// Session metrics
int sessionCount = profile.getSessionCount();
long totalTime = profile.getTotalSessionTime();
long avgLength = profile.getAverageSessionLength();
long lastSession = profile.getLastSessionLength();
long currentSession = profile.getCurrentSessionDuration();
Long firstSession = profile.getFirstSessionDate();
Long lastSessionDate = profile.getLastSessionDate();
// IAP metrics
int iapCount = profile.getIapTransactionCount();
Map<String, Double> revenueByCurrency = profile.getIapRevenueByCurrency();
List<String> productIDs = profile.getPurchasedProductIDs();
// ILRD metrics
double totalAdRevenue = profile.getTotalILRDRevenueUSD();
Map<String, Double> revenueByNetwork = profile.getIlrdRevenueByNetwork();Доступные свойства (геттеры Java):
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
getSessionCount() | int | Общее количество сеансов |
getTotalSessionTime() | long | Общее время в миллисекундах |
getAverageSessionLength() | long | Средняя продолжительность сеанса в миллисекундах |
getLastSessionLength() | long | Время последней завершённой сессии в миллисекундах |
getCurrentSessionDuration() | long | Продолжительность текущего активного сеанса в миллисекундах |
getFirstSessionDate() | Long | Временная метка первой сессии (мс с момента эпохи) |
getLastSessionDate() | Long | Временная метка последней сессии (мс с момента эпохи) |
getIapTransactionCount() | int | Общее количество IAP |
getIapRevenueByCurrency() | Map<String, Double> | Выручка по коду валюты |
getPurchasedProductIDs() | List<String> | Отсортированные идентификаторы товаров |
getTotalILRDRevenueUSD() | double | Общая выручка от рекламы, долл. США |
getIlrdRevenueByNetwork() | Map<String, Double> | Доходы от рекламы по сетям |
Получить профиль в виде словаря #
Возвращает карту со всеми метриками для удобной сериализации:
Map<String, Object> profileDict = instance.getUserProfileDictionary();
// Example usage
Integer sessionCount = (Integer) profileDict.get("session_count");
String firstSession = (String) profileDict.get("first_session_date");
Map<String, Double> iapRevenue = (Map<String, Double>) profileDict.get("iap_revenue_by_currency");
List<String> productIds = (List<String>) profileDict.get("purchased_product_ids");Ключи словаря (всегда присутствуют):
| Ключ | Тип | Описание |
|---|---|---|
session_count | Integer | Общее количество сеансов |
total_session_time | Long | Общее время (миллисекунды) |
average_session_length | Long | Средняя продолжительность сеанса (миллисекунд) |
last_session_length | Long | Последний сеанс (миллисекунды) |
iap_transaction_count | Integer | Общее количество IAP |
total_ilrd_revenue_usd | Double | Общая выручка от рекламы, долл. США |
Ключи словаря (условно — только при наличии):
| Ключ | Тип | Описание |
|---|---|---|
first_session_date | String | Дата в формате ISO 8601 |
last_session_date | String | Дата в формате ISO 8601 |
current_session_length | Long | Продолжительность активной сессии (миллисекунд) |
iap_revenue_by_currency | Map<String, Double> | Соотношение валют → выручка |
purchased_product_ids | List<String> | Отсортированный список идентификаторов товаров |
ilrd_revenue_by_network | Map<String, Double> | Схема сети → выручка |
Сбросить настройки профиля #
Удаляет все данные профиля пользователя:
instance.resetUserProfile();Настройки сеанса #
Настройка времени ожидания сеанса (по умолчанию — 30 минут):
UserProfileManager.setSessionTimeoutMs(600000); // 10 minutesКэш повторных попыток #
Вы можете включить/выключить повторную попытку и кэширование всех событий при неудачных запросах или отсутствии интернет-соединения у пользователей. Эти события будут отправляться после того, как новое событие будет добавлено в очередь и пользователь восстановит соединение.
.setCacheEventSetting(setting: true)
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
instance.setCacheEventSetting(setting: true);Интеграция доходов от рекламы на уровне впечатлений #
Tenjin поддерживает возможность интеграции с функцией Impression Level Ad Revenue (ILRD) из,
- AppLovin MAX
- Unity LevelPlay
- ГиперБид
- AdMob
- TopOn
- CAS
- TradPlus
- CloudX
Эта функция позволяет вам получать уведомления о событиях, связанных с вашими доходами от рекламы, которые формируются при каждом показе рекламного объявления пользователю. Руководство по интеграции доступно здесь
Параметры Google DMA #
Если у вас уже интегрирована платформа управления согласием (CMP), параметры Google DMA будут автоматически собираться SDK Tenjin. Если у вас интегрирована CMP, в SDK Tenjin ничего дополнительно реализовывать не нужно. Если вы хотите переопределить настройки своей CMP или просто создать собственные механизмы получения согласия, вы можете воспользоваться следующим:
setGoogleDMAParameters(boolean, boolean)
TenjinSDK instance = TenjinSDK.getInstance(this, " ");
instance.setGoogleDMAParameters(adPersonalization, adUserData); Чтобы явно управлять сбором параметров Google DMA, у вас есть возможность в любой момент включить или отключить эту функцию. Хотя по умолчанию она включена, вы можете легко настроить свои предпочтения с помощью методов optInGoogleDMA или optOutGoogleDMA, что обеспечит вам полный контроль над настройками конфиденциальности ваших данных:
instance.optInGoogleDMA();
instance.optOutGoogleDMA(); Тестирование #
Вы можете проверить работоспособность интеграции с помощью нашего инструмента для проверки данных с тестовых устройств в режиме реального времени. Добавьте свой advertising_id в список тестовых устройств. Вы найдёте его в разделе "Поддержка" -> Тестовые устройства. Перейдите на страницу Инструмент для работы с событиями в реальном времени и отправьте тестовые события из своего приложения. Вы должны увидеть поступающие события в реальном времени:
