-
Постов
2 517 -
Зарегистрирован
-
Посещение
-
Победитель дней
264
Активность репутации
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в [Статья][Android] Как получить информацию о потреблении ОЗУ?
Ссылка: http://delphifmandroid.blogspot.ru/2017/03/blog-post.html
Автор: Ефимов Андрей
Описание:
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в Остановить таймер, когда приложение сворачивается
Вот сделал таблицу с событиями. Добавил в статью Очередь событий Delphi приложения на Android
И получилось, что отслеживать сворачивание можно по:
OnSaveState
aeWillBecomeInactive
EnteredBackground
Разворачивание:
WillBecomeForeground
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в Остановить таймер, когда приложение сворачивается
Не совсем, если отслеживать все возможные варианты сворачивания приложения (включая выход из приложения), то лучше использовать:
TApplicationEvent.EnteredBackground
Для отслеживания разворачивания приложения достаточно:
TApplicationEvent.WillBecomeForeground
aeBecameActive и aeWillBecomeInactive отрабатывают только в определённых случаях.
p.s. Надо табличку оформить, чтобы было понятно, когда и для чего могут понадобится те или иные события.
-
Равиль Зарипов (ZuBy) отреагировална krapotkin в Остановить таймер, когда приложение сворачивается
https://community.embarcadero.com/blogs/entry/handling-ios-application-events-39450
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в Остановить таймер, когда приложение сворачивается
Очередь событий Delphi приложения на Android Жизненный цикл мобильного приложения -
Равиль Зарипов (ZuBy) получил реакцию от Kitty в TWebBrowser
из TWebBrowser никак вроде
можно через THTTPClient и метод Get(url)
-
Равиль Зарипов (ZuBy) отреагировална krapotkin в Save for Enterprise or Ad Hoc Deployment
чтобы выгрузить что-то на устройство все равно нужен сертификат, насколько я понимаю
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Окончательная точка в вопросе расчета высоты TListViewItem (TListItemText)
у меня нет проблем с подсчетом высоты текста, в ModernLV есть код без костылей и без загрузки шрифта
function getItemTextHeight(const AItem: TListItemText; const aWidth: Single = 0): Integer; // ZuBy function getItemTextButtonHeight(const AItem: TListItemTextButton; const aWidth: Single = 0): Integer; // ZuBy function getItemTextWidth(const AItem: TListItemText; const aHeight: Single = 0): Integer; // ZuBy function getItemTextButtonWidth(const AItem: TListItemTextButton; const aHeight: Single = 0): Integer; // ZuBy в нескольких проектах используется, iOS, Android, Windows
-
Равиль Зарипов (ZuBy) получил реакцию от Menkos1 в Наложил стиль и перестала работать TComboBox
как-то странно вы стили подключаете... зачем его редактировать?
Загрузите в TStyleBook стиль, выберите нужный для TComboBox.
а то что не выбирается, возможно в стиле где-то косяк в HitTest у элементов
HitTest = true - разрешает принимать события мыши
HitTest = false - запрещает принимать события мыши
-
Равиль Зарипов (ZuBy) получил реакцию от ENERGY в Тормозит анимация TabControl при использовании TFrame (на MyFrame.Parent := FrameTabPage )
Попробуйте прогрузить стиль фрейма до показа, вот таким кодом
-
Равиль Зарипов (ZuBy) отреагировална dante333 в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
Насколько я помню,он бесплатен до определенного количества пользователей/запросов.Сам начинал с него,но потом перешел на тогда еще GCM + PHP push-сервер.И как говорится,"ни о чём не жалею" )).
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
Токен - это идентификатор который отправил сервер (APNs/GCM), он используется для связи приложения и серверной части. Кинвей на своей стороне хранит ваши токены, чтобы по ним отправить пуш. Иначе другого варианта нет. Это классно, если у вам не требуется делать выборку по определенным критериям.
Я такие сервисы не использую, т.к. часто в пушах присылаю техническую информацию, которая обычным (не всем) пользователям не должна быть показана. А для того чтобы сделать подобное, нужна своя база с токенами и другой инфой о владельце девайса.
Отослать пуши по критерию:
Обновление приложения на определенной платформе Техническая информация по типу учетной записи (админ, модер, пользователь и тд..) Поздравление с днем рождения, предоставление скидок Уведомление о недостаточном балансе и тд.. примеров масса Я слабо представляю такую реализацию через сервис кинвей и подобным которые предоставляются из коробки в RAD.
Статья была написана, чтобы показать именно НАСТРОЙКУ через сервис Firebase, и никак не претендует на полное описание работы с пушами в целом.
Код на делфи был показан, чтобы убрать зависимость от сервисов из коробки
Код на PHP был показан, чтобы можно было реализовать функционал на своём сервере
Пару слов было сказано о правильном сохранении в БД, а вот бизнес логика уже у каждого приложения своя.
-
Равиль Зарипов (ZuBy) отреагировална Кривяков Виталий в [Статья] Как конвертировать растровую картинку в векторный TPath Firemonkey. How to convert a bitmap image (png, jpeg, bmp) into a Firemonkey vector TPath.
Добрый день!
Коллеги, хочу озвучить одну из причин, из-за которой может возникать ситуация " Иногда бывает что при вставке пути в TPath, компонент его отображает некорректно"
Дело в том, что существуют сокращения в представлении данных и не все из низ TPath понимает, вот с чем столкнулся:
Есть команда 'c' - рисование кривой. не буду вдаваться в подробности, можно найти в интернете описание, скажу только то, что данная команда содержит 6 чисел. В идеале должно быть:
сX1 X2 X3 X4 X5 X6
Но очень часто (например в иконках Material Design) можно встретить:
c-1.1 0-1.99.9-1.99 2
И на этой строчке парсер TPath падает с ошибкой, так как пытается сконвертировать '-1.99.9' в число, что не верно. В реальности данная запись соответствует двум числам -1.99 и 0.9.
Для обхода проблемы я загружаю SVG в рантайме, и сроку пропускаю через корректор:
function CorrectSVG(const Value: String): String; var SB : TStringBuilder; I: Integer; C : Char; begin SB := TStringBuilder.Create; try I := 0; for C in Value do begin if C='.' then Inc(I) else if not CharInSet(C, ['0'..'9']) then I := 0; if I=2 then begin SB.Append(' 0.'); I := 0; end else SB.Append(C); end; Result := SB.ToString; finally FreeAndNil(SB); end; end;
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
Токен - это идентификатор который отправил сервер (APNs/GCM), он используется для связи приложения и серверной части. Кинвей на своей стороне хранит ваши токены, чтобы по ним отправить пуш. Иначе другого варианта нет. Это классно, если у вам не требуется делать выборку по определенным критериям.
Я такие сервисы не использую, т.к. часто в пушах присылаю техническую информацию, которая обычным (не всем) пользователям не должна быть показана. А для того чтобы сделать подобное, нужна своя база с токенами и другой инфой о владельце девайса.
Отослать пуши по критерию:
Обновление приложения на определенной платформе Техническая информация по типу учетной записи (админ, модер, пользователь и тд..) Поздравление с днем рождения, предоставление скидок Уведомление о недостаточном балансе и тд.. примеров масса Я слабо представляю такую реализацию через сервис кинвей и подобным которые предоставляются из коробки в RAD.
Статья была написана, чтобы показать именно НАСТРОЙКУ через сервис Firebase, и никак не претендует на полное описание работы с пушами в целом.
Код на делфи был показан, чтобы убрать зависимость от сервисов из коробки
Код на PHP был показан, чтобы можно было реализовать функционал на своём сервере
Пару слов было сказано о правильном сохранении в БД, а вот бизнес логика уже у каждого приложения своя.
-
Равиль Зарипов (ZuBy) получил реакцию от Anatoliy в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
Ссылка: http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html
Автор: Зарипов Равиль @ZuBy
Описание: Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
В предыдущей части , я рассказывал как сделать настройку пуш уведомления в консоли Firebase, в этой я покажу код на Delphi и серверную часть на PHP
https://github.com/rzaripov1990/PUSHTestFCM
-
Равиль Зарипов (ZuBy) отреагировална krapotkin в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
хитрость именно в том, что kinvey - это готовый сервер. как Google Firebase или amazon_не_помню_как_его
по какому принципу его выбрала emro - загадка
если вы собираетесь полностью ВСЕ данные хранить на нём - тогда все норм.
а если вам нужен свой сервер со своими юзерами и другими вещами?
тогда нужно где-то соединять ваш логин-пароль и ID вашего телефона(токен) чтобы при регистрации ваш сервер мог послать пуш на ваш девайс
-
Равиль Зарипов (ZuBy) получил реакцию от Manfred в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
Принцип работы Push на разных ОС не отличается
если коротко, не обращаем внимание на OS и термины (для ознакомления прошу сюда)
Описание технологии GCM и APNs хорошо расписаны на хабре, гораздо более профессионально. Я уж точно ничего нового не внесу.
-
Равиль Зарипов (ZuBy) отреагировална krapotkin в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
ems - тоже вещь в себе. эту штуку теперь развили до RAD server и продают за деньги и его и еще и клиентские лицензии.
за эти деньги какбе не очень нужен он. так что делать реализацию под EMS или RAD server имхо бессмысленно
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
описание терминов и работы пуш уведомлении разжован в интернете чуть более чем полностью) и это не совсем относится к FMX, так что я не стал тратить на это время, увы его не так много как хотелось бы)
-
Равиль Зарипов (ZuBy) получил реакцию от Manfred в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
@Ingalime спасибо за вопросы)
1) Вот есть хорошее описание работы и терминов касательно APNs и GCM, тратить на это время и писать тоже самое не хотелось
2) Реализация серверной и клиентской части есть в статье
3) Что для этого нужно и как настроить есть в предыдущей статье
Laravel - это PHP фреймфорк, но выложил код на "чистом" PHP, чтобы каждый мог быстро интегрировать в свой проект, не привязываясь к фреймворкам
-
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
Токен это идентификатор который генерирует системный сервис для конкретного девайса по каким-то критериям. Но не вечный, есть время жизни, но это невозможно проверить.
-
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
Честно даже никогда и не рассматривал этот вариант и не интересовался им. Статья нацелена на реализацию через Firebase, т.к. сервис содержит необходимый функционал для android + ios и web, это очень удобно и настройка проще для ios, не нужно генерить и держать сертификаты у себя на сервере.
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в [Статья][Android] AlarmManager - Автозапуск приложения в назначенное время
Евгений, внимательнее читайте статью, там есть раздел теории, а конкретно такие строчки:
это половина ответа на ваш вопрос.
Вторую половину можно найти например в этой статье [Android Service+BroadcastReceiver] Автозапуск службы после рестарта ОС. В ней говорится, какое имя будет у сервиса после создания:
-
Равиль Зарипов (ZuBy) отреагировална Евгений Корепов в Нужно ли разрешение Write External Storage
По моему опыту это разрешение не нужно. Включая вариант с установкой приложения на SD-карту.
Разрешение требуется при использовании папок TPath.GetShared% или когда явно указано использование External Memory в http://docwiki.embarcadero.com/RADStudio/Seattle/en/Standard_RTL_Path_Functions_across_the_Supported_Target_Platforms
P.S. Некоторые мои приложения опубликованные в маркете использует единственное разрешение Internet, при этом успешно пишут конфиги в GetHomePath. Проблем с установкой на SD-карту тоже не замечено. Сейчас гугль заставляет публиковать политику конфиденциальности при использовании разрешений, так что чем меньше разрешений, тем лучше. Да и пользователи с большим доверием относятся к приложению с минимальными разрешениями. Жаль что пуши требуют разрешение Идентификационные данные - пользователи постоянно обвиняют приложение в попытках украсть что то с их телефонов ;-)
-
Равиль Зарипов (ZuBy) отреагировална dante333 в [Статья] Как конвертировать растровую картинку в векторный TPath Firemonkey. How to convert a bitmap image (png, jpeg, bmp) into a Firemonkey vector TPath.
Думаю будет полезно многим.Сам делал так же недавно в одном проекте,лучше этого метода тоже ничего не придумал.Да и svg оказался довольно годным форматом,который легко поддается манипуляциям.
Вот так у меня выглядит: