Перейти к содержанию
Fire Monkey от А до Я

Лидеры

Популярный контент

Показан контент с высокой репутацией 01.07.2021 во всех областях

  1. Ну вот и приехали(( https://4pda.to/2021/06/30/387350/proschaj_apk_google_perekhodit_na_novyj_format_android_prilozhenij/ Генерация Android App Bundle появилась только в 10.4.2, но работает криво. У меня не подтянулись доп. библиотеки, криво работает TListboxItem, возможно еще есть какие-то косяки. Но тем не менее советую уже сейчас посматривать в сторону перехода на новую версию
    1 балл
  2. Подключить Firebase не получилось. Напишу по памяти, так как время прошло уже прилично и это мои собственные умозаключения не претендующие на истину. Было много различных попыток подключить Firebase , основная проблема, что нет в наличии библиотеки jar, последняя библиотека лежит в maven репозитории и она уже устарела, по-моему от 2019 года. Ссылка на maven репозиторий Firebase, да и многие другие предлагают использовать только Gradle, что не дает мне возможность использовать это для Delphi . После общения с поддержкой от Firebase (если сильно упростить), мне предложили изменить среду разработки. Но приложение уже было полностью готово для двух мобильных платформ, и мне пришлось искать другие SDK. Я перебрал многие, которые предлагали помимо установки с помощью Gradle, скачать SDK в виде файла jar или aar (из aar иногда можно добыть jar, но это только иногда, например в последних firebase его там нет) Забыл сказать, что для всех манипуляций, обязательно нужна установленная и запущенная Android Studio, и подключенный телефон, на который Delphi устанавливает приложение. В Android Studio я собрал проект с таким же именем, как и у моего Delphi приложения, для удобства отладки и контроля логов logcat. В приложение на Android Studio я подключил через Gradle нужное мне SDK и проверил его работоспособность, скопировал логи правильной работы приложения, отследил результаты на сайте аналитики, увидел что они действительно появились, и все данные телефона (размер экрана, марка ...) пришли в аналитику. Включил режим debag на стороне аналитики. Эти действия я проделывал и с Firebase, приложение написанное на Android Studio запускалось без проблем, приложение написанное на Delphi, в силу отсутствия новой библиотеки jar не запускалось и сыпало в logcat целые "простыни" ошибок, никакие данные в аналитику не приходили. Я пробовал вытащить нужную мне библиотеку Firebase из собранного в Android Studio dex файла, рабочего приложения. Затем вычленить из него нужные мне файлы и прикрепить их Delphiпроекту в виде jar библиотеки, но появлялась новая проблема, конфликты с уже установленными библиотеками на Delphi, отключение которых уже не позволяло собрать dex файл для Delphi проекта. Остановился я на SDK AppsFlyer, интеграция была возможна, так как сервис предлагал добавление SDK с помощью Gradle и возможность скачать и установить вручную. Саму библиотеку я подключил, но возникла проблема с получением событий, которые приходили например от google play Вот пример того что не получилось сделать: AppsFlyerConversionListener conversionListener = new AppsFlyerConversionListener() { @Override public void onConversionDataSuccess(Map<String, Object> conversionData) { for (String attrName : conversionData.keySet()) { Log.d("LOG_TAG", "attribute: " + attrName + " = " + conversionData.get(attrName)); } } Эти события, никак не удалось получить, и решить проблему не удалось, информации я не нашел. Было принято решение попробовать другое SDK. На этот раз это была Yandex AppMetrica, эта интеграция получилась. Для начала у них в доках по интеграции написано что есть возможность скачать jar и что все библиотеки (старые версии мне в дальнейшем тоже пригодились) есть в maven репозитории Далее я добавил библиотеку в проект, и приступил к созданию файла моста, для связи Вот сама библиотека: com.yandex.androidmobmetricalib3.20.1.jar.7z Файл мост я создавал с помощью утилиты java2op, которая находится в ... Embarcadero\Studio\21.0\bin\converters Но, при создании я получил ошибку, что-то там дублировалось и что-то мешало. Пытался проделать это с конкретным классом, но ничего не получилось. Оставалось только или делать файл ручками, или надеяться что в одной из старых библиотек все сгенерируется. Эмпирическим методом была найдена старая библиотека, в которой название методов нужного мне класса осталось прежним, а ошибка с дубликатами ушла. Файл мост был создан. Android.JNI.Yandex.pas.7z Осталось подключить его к моему приложению. Был создан класс, который работал с нужными мне методами SDK Yandex аналитики (Android.JNI.Yandex): unit YandexAnalytics; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, {$IFDEF ANDROID} Android.JNI.Yandex, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Os, Androidapi.JNI.App, {$ENDIF} FMX.Types; type TYandexMetrica = class private public {$IFDEF ANDROID} YAC : JYandexMetricaConfig; YA : JYandexMetrica; {$ENDIF} constructor Create; procedure SendEvent(Category, Action, LabelName : String; LabelValue : Integer); end; implementation constructor TYandexMetrica.Create; var AnKey, AnRepKey : JString; begin try AnKey := StringToJString('86e64a77-XXXX-XXXX-XXXX-XXXXXXXcbbc'); AnRepKey := StringToJString('20799a27-XXXX-XXXX-XXXX-XXXXXXX14180'); YAC := TJYandexMetricaConfig.JavaClass.newConfigBuilder(AnKey).withLogs().build; YA := TJYandexMetrica.Create; TJYandexMetrica.JavaClass.activate(TAndroidHelper.Context, YAC); TJYandexMetrica.JavaClass.enableActivityAutoTracking( TAndroidHelper.Activity.getApplication ); Log.d('================= TYandexMetrica.Created ======================'); EXCEPT on E : Exception do Begin Log.d( E.ClassName + 'YandexMetrica.Create -> ' + E.Message ); End; END; end; procedure TYandexMetrica.SendEvent(Category, Action, LabelName : String; LabelValue : Integer); begin {$IFDEF ANDROID} try Log.d( 'TRY YandexMetrica.SendEvent -> ' + Category + ',' + Action + ',' + LabelName + ',' + LabelValue.ToString ); TJYandexMetrica.JavaClass.reportEvent(StringToJString(Category), StringToJString('{"Action":"' + Action + '", "LabelName":"' + LabelName + '", "LabelValue":"' + LabelValue.ToString + '"}')); Log.d('================= Event Sended ======================'); EXCEPT on E : Exception do Begin Log.d( E.ClassName + 'YandexMetrica.SendEvent -> ' + E.Message ); End; END; {$ENDIF} end; end. В событии приложения onCreate создал экземпляр класса, и отправил событие YA := TYandexMetrica.Create; YA.SendEvent('AppEvent','Started',User.Client_Id, 0); Было добавлено в файл AndroidManifest.template.xml (информация из яндекс документов по интеграции) <%services%> <service android:name="com.yandex.metrica.MetricaService" android:enabled="true" android:exported="true" android:process=":Metrica"> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="com.yandex.metrica.IMetricaService" /> <data android:scheme="metrica" /> </intent-filter> <meta-data android:name="metrica:api:level" android:value="16" /> </service> <receiver android:name="com.yandex.metrica.MetricaEventHandler" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.yandex.metrica.intent.action.SYNC" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" /> <data android:scheme="package" /> </intent-filter> <!-- Необходимо для трэкинга кампаний --> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver> Пример логов из logcat, из которых видно что библиотека инициализирована, и отправлены два события [AppEvent] и [Balance] 2021-07-01 14:02:17.108 15138-15168/? I/AppMetrica: [ru.yandex.mobile.appmetrica] : [27889a6e-xxxx-xxxx-xxxx-xxxxxxxx3c64] Initializing of Metrica, Release type, Version 3.5.3, API Level 76, Dated 30.01.2019. 2021-07-01 14:58:48.979 18460-18460/? I/AppMetrica: Initializing of Metrica, Release type, Version 3.20.1, API Level 94, Dated 14.04.2021. 2021-07-01 14:58:49.033 18460-18531/? I/AppMetrica: Activate AppMetrica with APIKey 86e64a77-xxxx-xxxx-xxxx-xxxxxxxxcbbc 2021-07-01 14:58:49.033 18460-18531/? I/AppMetrica: [com.soclikes_ig] : [86e64a77-xxxx-xxxx-xxxx-xxxxxxxxcbbc] Enable activity auto tracking 2021-07-01 14:58:49.033 18460-18531/? I/AppMetrica: [com.soclikes_ig] : [86e64a77-xxxx-xxxx-xxxx-xxxxxxxxcbbc] Event received: AppEvent. With value: {"Action":"Started", "LabelName":"2905202123125", "LabelValue":"0"} 2021-07-01 14:58:49.034 18460-18531/? I/AppMetrica: Activate reporter with APIKey 20799a27-xxxx-xxxx-xxxx-xxxxxxxx4180 2021-07-01 14:58:49.233 18542-18567/? I/AppMetrica: Initializing of Metrica, Release type, Version 3.20.1, API Level 94, Dated 14.04.2021. 2021-07-01 14:58:49.263 18542-18567/? I/AppMetrica: Activate reporter with APIKey 20799a27-xxxx-xxxx-xxxx-xxxxxxxx4180 2021-07-01 14:59:13.975 18460-18531/? I/AppMetrica: [com.soclikes_ig] : [86e64a77-xxxx-xxxx-xxxx-xxxxxxxxcbbc] Event received: AppEvent. With value: {"Action":"ProfilesDeleted", "LabelName":"alex", "LabelValue":"319"} 2021-07-01 14:59:31.368 18460-18531/? I/AppMetrica: [com.soclikes_ig] : [86e64a77-xxxx-xxxx-xxxx-xxxxxxxxcbbc] Event received: Balance. With value: {"Action":"TrStart", "LabelName":"2905202123125", "LabelValue":"3"} Вот такие данные пришли в аналитику. +1 пользователь +2 события
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...