Jump to content

Recommended Posts

  • Administrators
Posted

Скачать:
Релиз доступен только по запросу.

Дата релиза:
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).
  • Добавлено предиктивное чтение градиентов и стилей после непосредственного использования таковых.
  • Добавлена поддержка использования ',', как разделителя в задании матриц трансформации.

Исправление ошибок 🐛

  • Like 7
Posted

Стесняюсь спросить, но что означает: возможность прокрутки списка интерактивным способом?

Posted
4 минуты назад, Alex O сказал:

Стесняюсь спросить, но что означает: возможность прокрутки списка интерактивным способом?

я думаю, интерактивным - значит пальцами по экрану (т.е. не программно) 😃

  • Like 1
Posted (edited)

а у меня вопрос такой: можно ли в рантайме менять провайдера рекламы в зависимости от страны? к сожалению, проверить не могу, т.к. ключ активации последний не подходит, жду нового (((

 

а, увидел: 

Цитата

Можно использовать один провайдер в приложении. У провайдера связь один ко многим.

жаль...

Edited by dervish00
  • Administrators
Posted
1 hour ago, Alex O said:

Стесняюсь спросить, но что означает: возможность прокрутки списка интерактивным способом?

Значит пальцем. Обычно есть два способа:

  • Программным. Когда программист при вызове метода выполняет какое-то взаимодействие пользователя (например, прокрутка)
  • Интерактивное. Пользователь пальцем взаимодействуя с компонентом заставляет его крутиться.
1 hour ago, dervish00 said:

а у меня вопрос такой: можно ли в рантайме менять провайдера рекламы в зависимости от страны? к сожалению, проверить не могу, т.к. ключ активации последний не подходит, жду нового (((

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

1 hour ago, dervish00 said:

Можно использовать один провайдер в приложении. У провайдера связь один ко многим.

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

  • Thanks 1
Posted

Привествую, при попытке сборки демо проекта YandexAdvDemo с рекламой яндекс ошибка
[DCC Fatal Error] Form.Main.pas(11): F2613 Unit 'FGX.Advertising.Types' not found.

Спасибо

Posted
2 часа назад, r3h0soft сказал:

Привествую, при попытке сборки демо проекта YandexAdvDemo с рекламой яндекс ошибка
[DCC Fatal Error] Form.Main.pas(11): F2613 Unit 'FGX.Advertising.Types' not found.

Спасибо

подтверждаю, не компилится

Posted (edited)

ну и для понимания того что делать с , большая просьба к Ярославу - рассказать с примером что, куда и какие идентификаторы вставлять в Yandex Mobile Ads. (дело в том что для меня это будет первый опыт размещения баннера  и честно прошу помощи)

Edited by Alex O
  • Administrators
Posted

Здравствуйте.

3 hours ago, r3h0soft said:

[DCC Fatal Error] Form.Main.pas(11): F2613 Unit 'FGX.Advertising.Types' not found.

Видимо потерялся файл в пути 🙂. Приносим прощения за неудобства. 

В ближайшее время будет выпущен хотфикс.

Спасибо.

  • Administrators
Posted

Файл FGX.Advertising.Types более не нужен. Но, к сожалению, в пакетах на него остались ссылки. В первом хотфиксе этот будет исправлено.

В качестве быстрого фикса вы можете положить в папку с проектом файл из аттача. Это временно устранит проблему сборки.

После выпуска хотфиска данный файл можно будет удалить.

FGX.Advertising.Types.pas

  • Thanks 1
Posted (edited)

После запуска демо YandexAdvDemo сразу же закрывается (падает)

Может что-то надо прописать в манифесте?

Edited by Alex O
Posted
2 часа назад, Alex O сказал:

После запуска демо YandexAdvDemo сразу же закрывается (падает)

Может что-то надо прописать в манифесте?

Попробуйте поменять AdSize со значения SmartBanner на что-нибудь другое.

Posted
2 часа назад, dervish00 сказал:

Попробуйте поменять AdSize со значения SmartBanner на что-нибудь другое.

У Вас получилось запустить демо?

Posted
3 часа назад, dervish00 сказал:

Попробуйте поменять AdSize со значения SmartBanner на что-нибудь другое.

Просто идентификатор баннера я прописал, а вот идентификатор приложения не могу понять куда прописывать 

Posted
14 часов назад, Alex O сказал:

У Вас получилось запустить демо?

да. у меня выскакивала ошибка. я поменял smartbanner на другое значение и всё получилось.

Screenshot_20230602-123126.jpg

  • Administrators
Posted
On 6/4/2023 at 9:11 PM, Alex O said:

нет, у меня с любыми размерами демо падает сразу же после запуска (((

  1. Есть что в стек трейсе, в логе на устройстве?
  2. Запускаете демо-пример или свой проект делаете?
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. Правку внес.

×
×
  • Create New...