Posted June 2, 20232 yr Administrators Скачать: Релиз доступен только по запросу. Дата релиза: 1 июня 2023 Внимание 🚨 1. Выполнен рефакторинг компонентов размещения рекламы, в результате чего теперь поддерживаются разные поставщики рекламы (Помимо Google AdMob). Если вы используете в своих проектах компоненты TfgBannerAd или TfgInterstitialAd, то вам необходимо выполнить следующие действия: Разместить на форме, где вы используете TfgBannerAd или TfgInterstitialAd, новый компонент TfgGoogleAdMobProvider. Достаточно одного экземпляра на все. Связать TfgBannerAd и TfgInterstitialAd с компонентом при помощи свойства Provider. Если не выполнить эти шаги, то в рантайме реклама не будет отображаться. 2. Произошло переименование двух типов, используемых для TfgPickerPhoto: fgPickerPhotoSource заменен на TfgPickerMediaSource fgPhotoFiles заменен на TfgMediaFiles Пожалуйста, обновите декларации, если вы используете в своих проектах данные типы напрямую. Новое ✨ TfgRegionPicker Разработан новый компонент для осуществления интерактивного выбора области. Детали. Реклама TfgBannerAd и TfgInterstitialAd Выполнен рефакторинг компонентов размещения рекламы, в результате чего теперь поддерживаются разные поставщики рекламы (Google AdMob, Yandex Mobile Ads). Раньше рекламная площадка Google AdMob была интегрирована прямо в компоненты TfgBannerAd и TfgInterstitialAd. Сейчас же мы выделили поставщика рекламы в отдельные компоненты TfgGoogleAdMobProvider называемый провайдером рекламы. А компоненты TfgBannerAd и TfgInterstitialAd просто используют информацию от провайдера. Поэтому теперь для использования рекламы необходимо использовать провайдер требуемой рекламной площадки и связать его с компонентами TfgBannerAd и TfgInterstitialAd. Можно использовать один провайдер в приложении. У провайдера связь один ко многим. Реклама Yandex Mobile Ads Добавлена поддержка рекламы в формате "баннер" и "полностраничная реклама" от рекламной площадки Yandex Mobile Ads. Разработан новый провайдер TfgYandexMobileAdsProvider. На текущий момент компоненты рекламы реализованы только для Android. Добавлен новый демо-пример: "Компоненты" -> "TfgBannerAd" -> "Пример отображения рекламного баннера (Yandex Mobile Ads)" Настройка для Android Для того, чтобы использовать Yandex Mobile Ads необходимо добавить зависимость "com.yandex.android:mobileads:5.7.0" в настройках библиотек "Project" -> "FGX Native Android Libraries". Обрезка, превью и другие хелперы для TfgBitmap Добавлен новый модуль FGX.Bitmap.Helpers, расширяющий возможности TfgBitmap и добавляющий дополнительные методы по трансформации и редактированию битмапа: вырезание области (Crop), создание превью (Thumbnail). TfgBitmapHelper = class helper for TfgBitmap public {$REGION 'Creating new bitmaps'} /// <summary> /// Создает миниатюрное изображение, которое может использовать в виде превью. Изображение вписывается в /// указанный размер с сохранение пропорций и центрируется. /// </summary> /// <remarks>Если передается нулевой размер, то метод поднимает исключение.</remarks> function CreateThumbnail(const ASize: TSize): TfgBitmap; /// <summary> /// Создает новое изображение сформированное из указанной области. <c>ARegion</c> - физические координаты области. /// </summary> function CreateCropped(const ARegion: TRect): TfgBitmap; /// <summary>Создает новое изображение и применяет указанный оттенок.</summary> function CreateTinted(const ATintColor: TAlphaColor): TfgBitmap; /// <summary>Создает новое изображение и поворачивает его на указанный угол.</summary> function CreateRotated(const AAngle: TfgRotation): TfgBitmap; {$ENDREGION} {$REGION 'Transformation'} /// <summary>Выполняет вырезание указанной области изображения. <c>ARegion</c> - физические координаты области.</summary> /// <remarks> /// <para> /// Если координаты области <c>ARegion</c> выходят за пределы физического размера изоюбражения, то они отсекаются /// по размеру изображения. /// </para> /// <para> /// Если результирующая область имеет нулевой размер, то текущий битмап принимает нулевой размер. /// </para> /// </remarks> procedure Crop(const ARegion: TRect); /// <summary>Симметричное отражение изображения по горизонтальной оси.</summary> procedure FlipHorizontal; /// <summary>Симметричное отражение изображения по вертикальной оси.</summary> procedure FlipVertical; {$ENDREGION} end; Чтобы воспользоваться новыми методами, необходимо подключить в секцию uses модуль FGX.Bitmap.Helpers и вызывать новые методы на экземпляре TfgBitmap. Детали. Exif Добавлен новый сервис для получения мета информации Exif. Чтобы запросить Exif информацию нужно воспользоваться классом FGX.Exif.TfgExif. Типовой пример использования выглядит так: uses FGX.Exif; var Properties: TfgExifProperties; if TfgExif.TryLoad(AFileName, Properties) then begin // Properties.Rotation; end; Детали. Жест поворота Добавлена поддержка нового жеста поворота. Для того, чтобы воспользоваться жестом нужно: Включить его через свойство GestureKinds = GestureKinds + TGestureKind.Rotate Написать обработчик TfgControl.OnRotate. В параметрах события TfgControl.OnRotate передается информация о текущем повороте: TfgRotateInfo = record /// <summary>Первоначальные координаты первого пальца (<c>Phase = TfgGesturePhase.Begin</c>).</summary> /// <remarks>Указывается в локальных координатах контрола.</remarks> InitialPoint1: TPointF; /// <summary>Первоначальные координаты второго пальца (<c>Phase = TfgGesturePhase.Begin</c>).</summary> /// <remarks>Указывается в локальных координатах контрола.</remarks> InitialPoint2: TPointF; /// <summary>Текущие координаты первого пальца.</summary> /// <remarks>Указывается в локальных координатах контрола.</remarks> Point1: TPointF; /// <summary>Текущие координаты второго пальца.</summary> /// <remarks>Указывается в локальных координатах контрола.</remarks> Point2: TPointF; /// <summary>Текущий угол поворота относительно начального (В градусах).</summary> DeltaAngle: Single; /// <summary>Текущая фаза жеста.</summary> Phase: TfgGesturePhase; function ToString: string; end; TfgPickerVideo Добавлен пикер видео файлов. Вы можете выбрать один или несколько видео файлов из галереи (TfgPickerVideoFactory.PickVideoFromLibrary, TfgPickerVideoFactory.PickVideosFromLibrary), а так же снять свое видео используя системный интерфейс (TfgPickerVideoFactory.PickVideoFromCamera). При съемке видео есть возможность указать максимальную длину видео в секундах (TfgPickerVideo.DurationLimit). Внимание: На Android работа данной опции не гарантируется, т.к. напрямую зависит от поставщика камеры. TfgCalendar Добавлена реализация для iOS. Улучшения 🙌 TfgDrawerLayout Добавлено новое свойство SwipeEnabled, которое отвечает за возможность выдвижения/задвигания панели интерактивным способом. Используйте это свойство вместо Enabled. TfgCollectionView Добавлено новое свойство ScrollEnabled, которое отвечает за возможность прокрутки списка интерактивным способом. SVG Улучшение поддержки SVG файлов: Добавлено распознавание параметров точек градиента через стиль (Атрибут Style). Добавлено предиктивное чтение градиентов и стилей после непосредственного использования таковых. Добавлена поддержка использования ',', как разделителя в задании матриц трансформации. Исправление ошибок 🐛 Не работало программное отключение жестов (iOS). Использование TfgLabel.FocusControl могло приводит к падению приложения в определенных случаях. FGX-270 Не срабатывает событие TfgLabel.OnTap (Android). FGX-271 При встраивании формы мог автоматически включаться PullToRefresh (Android). Исправлено отображение вкладки TfgPage в дизайнере на HiDPI экранах при использовании оттенка для Android стиля. При использовании TfgNavigationBar.Style = Translucen теперь отключается тень.
June 2, 20232 yr Стесняюсь спросить, но что означает: возможность прокрутки списка интерактивным способом?
June 2, 20232 yr 4 минуты назад, Alex O сказал: Стесняюсь спросить, но что означает: возможность прокрутки списка интерактивным способом? я думаю, интерактивным - значит пальцами по экрану (т.е. не программно) 😃
June 2, 20232 yr а у меня вопрос такой: можно ли в рантайме менять провайдера рекламы в зависимости от страны? к сожалению, проверить не могу, т.к. ключ активации последний не подходит, жду нового ((( а, увидел: Цитата Можно использовать один провайдер в приложении. У провайдера связь один ко многим. жаль... Edited June 2, 20232 yr by dervish00
June 2, 20232 yr Author Administrators 1 hour ago, Alex O said: Стесняюсь спросить, но что означает: возможность прокрутки списка интерактивным способом? Значит пальцем. Обычно есть два способа: Программным. Когда программист при вызове метода выполняет какое-то взаимодействие пользователя (например, прокрутка) Интерактивное. Пользователь пальцем взаимодействуя с компонентом заставляет его крутиться. 1 hour ago, dervish00 said: а у меня вопрос такой: можно ли в рантайме менять провайдера рекламы в зависимости от страны? к сожалению, проверить не могу, т.к. ключ активации последний не подходит, жду нового ((( Можно использовать два разных провайдера рекламы и переподключать их на лету. Однако, нужно иметь в виду, что AdMob требует указания ключа на уровне андроид манифеста. Поэтому AdMob всегда будет инициализироваться. 1 hour ago, dervish00 said: Можно использовать один провайдер в приложении. У провайдера связь один ко многим. Это формулировка говорит о том, что можно использовать один провайдер для всех компонентов баннеров и полностраничной рекламы.
June 2, 20232 yr Привествую, при попытке сборки демо проекта YandexAdvDemo с рекламой яндекс ошибка[DCC Fatal Error] Form.Main.pas(11): F2613 Unit 'FGX.Advertising.Types' not found. Спасибо
June 2, 20232 yr 2 часа назад, r3h0soft сказал: Привествую, при попытке сборки демо проекта YandexAdvDemo с рекламой яндекс ошибка[DCC Fatal Error] Form.Main.pas(11): F2613 Unit 'FGX.Advertising.Types' not found. Спасибо подтверждаю, не компилится
June 2, 20232 yr ну и для понимания того что делать с , большая просьба к Ярославу - рассказать с примером что, куда и какие идентификаторы вставлять в Yandex Mobile Ads. (дело в том что для меня это будет первый опыт размещения баннера и честно прошу помощи) Edited June 2, 20232 yr by Alex O
June 2, 20232 yr Administrators Здравствуйте. 3 hours ago, r3h0soft said: [DCC Fatal Error] Form.Main.pas(11): F2613 Unit 'FGX.Advertising.Types' not found. Видимо потерялся файл в пути 🙂. Приносим прощения за неудобства. В ближайшее время будет выпущен хотфикс. Спасибо.
June 2, 20232 yr Administrators Файл FGX.Advertising.Types более не нужен. Но, к сожалению, в пакетах на него остались ссылки. В первом хотфиксе этот будет исправлено. В качестве быстрого фикса вы можете положить в папку с проектом файл из аттача. Это временно устранит проблему сборки. После выпуска хотфиска данный файл можно будет удалить. FGX.Advertising.Types.pas
June 2, 20232 yr После запуска демо YandexAdvDemo сразу же закрывается (падает) Может что-то надо прописать в манифесте? Edited June 2, 20232 yr by Alex O
June 2, 20232 yr 2 часа назад, Alex O сказал: После запуска демо YandexAdvDemo сразу же закрывается (падает) Может что-то надо прописать в манифесте? Попробуйте поменять AdSize со значения SmartBanner на что-нибудь другое.
June 3, 20232 yr 2 часа назад, dervish00 сказал: Попробуйте поменять AdSize со значения SmartBanner на что-нибудь другое. У Вас получилось запустить демо?
June 3, 20232 yr 3 часа назад, dervish00 сказал: Попробуйте поменять AdSize со значения SmartBanner на что-нибудь другое. Просто идентификатор баннера я прописал, а вот идентификатор приложения не могу понять куда прописывать
June 3, 20232 yr 14 часов назад, Alex O сказал: У Вас получилось запустить демо? да. у меня выскакивала ошибка. я поменял smartbanner на другое значение и всё получилось.
June 5, 20232 yr Author Administrators On 6/4/2023 at 9:11 PM, Alex O said: нет, у меня с любыми размерами демо падает сразу же после запуска ((( Есть что в стек трейсе, в логе на устройстве? Запускаете демо-пример или свой проект делаете? On 6/3/2023 at 3:38 AM, Alex O said: а вот идентификатор приложения не могу понять куда прописывать Идентификатор проекта нигде не нужно указывать для Yandex Mobile Ads, на сколько я знаю. Только AdUnitID у баннера. On 6/3/2023 at 5:32 PM, dervish00 said: да. у меня выскакивала ошибка. я поменял smartbanner на другое значение и всё получилось. SmartBanner не поддерживается официально в Yandex Mobile Ads. Правку внес.