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

juppy

Пользователи
  • Постов

    56
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Весь контент juppy

  1. Есть такая библиотека https://github.com/amarildolacerda/KernowSoftwareFMX То, что на скриншотах - это компонент ksVirtualListView. Его работа показана в примере https://github.com/amarildolacerda/KernowSoftwareFMX/tree/master/Samples/Action Buttons Но мне не понравилось как он работает. Там ЭкшнБаттоны не тянутся за свайпом, а сами появляются поняв, что свайп сделан. На IOS такое поведение не очень ожидаемо. Но в целом работает очень даже миленько.
  2. Всем привет! Есть приложение, которое по DataSnap в потоке подключается к серверу и тянет с него какие-то данные. Все работает хорошо и без сбоев. Но есть нюанс!!!! ??? Реализация следующая. Сервер SQL база. MyTread.Execute; try проверка доступности сервера except terminate end; Создание объектов для подключения к серверу Выставляем таймаут для TSQLConnection try открываем ClientDataSet читаем полученные данные except terminate end; Как бы упрощенно но все понятно. Так вот если в момент, когда после открытия ClientDataSet на мобильном устройстве пропадает связь с сервером, приложение зависает в бесконечном ожидании. Можно ли как-то красиво обрабатывать эту ситуацию? Или может есть какие-то шаблонные конструкции на этот счет. Можно конечно и колхоз наколхозить, но это всегда успеется. Хочется ведь все чтобы красиво... Вот есть ветка на эту тему, но сделал как там описано, ничего не ловится.
  3. Всем привет! Из этой темы так и непонятно как прочитать свои сообщения, которые пришли когда приложение было "inactive or killed". В целом задача - собирать у себя в приложении отправленные пуши все, которые дошли до устройства. В IOS все работает очень красиво!. А вот в Андроиде не могу получить в приложение все сообщения, которые пришли по его токену. У меня в Андроиде событие OnReceiveNotificationEvent отрабатывает только когда приложение активно. Сейчас сижу, разбираюсь. В голове каша. Дайте пожалуйста какой-нибудь намек куда смотреть?...
  4. Я сначала начал идти по пути примера Равиля. А потом просто попробовал вот так: tmpBody :=StringReplace(FDQuery1.FieldByName('Body').AsString, '\n', #13#10, [rfReplaceAll]); Работает на всех устройствах, которые проверял. И старые и новые все нормально переносится. ЗЫ '\n' в теле сообщения обозначает место переноса на сл.строчку.
  5. Ребят, еще раз всем спасибо! Все заработало на обеих сборках. Я сам невнимательно настроил 64битную часть проекта. Сейчас все внимательно проверил, поправил (конкретно у меня не стояла галочка "Receive Push Notifications" в ветке настроек 64бит проекта) все заработало.
  6. Огромное спасибо за подсказки/наводки!!! Я тоже начал получать пуши из 10.3.3. но только на 32бит сборку. 64 все равно виснит. Может есть какой-нибудь секрет для 64бит?
  7. Нет. Я и до этого не скармливал. У меня проект написан на 10.3.1. Все и так работало.
  8. Я бросил надежду победить 1033. т.к. просто на пустом проекте ставишь галочку на поле "Receipt Push Notifications" и после этого приложение уже не запускается.
  9. Тоже думаю на SDK. Курю документацию. Пока безрезультатно.
  10. Всем привет! А что, а что-то с Notifications накосячили? Пустое приложение запускается нормально Затем в 32 "Entitlement List" в поле "Recieve push notifications" ставлю TRUE и все... 32 битный проект при запуске на устройстве валится и пишет "Произошел сбой в работе приложения..." 64 битный нормально запускается. Но как только я добавляю рабочий код получения токена продолжается бесконечный спэш экран призапуске. Кто-нибудь сталкивался с подобной проблемой? А, забыл.. Все это касается Андройда
  11. Да вот и я смотрю за алгоритмом работы, там именно высота айтема и положение по высоте как-то экспоненциально меняются. А на какой компонент самый подходящий для этого ЛистВью?
  12. Всем привет! Что-то крутил в руках телефон и вот задумался... Приложение "Кошелек" ведь реально красиво сделано.. А на Delphi как что-то подобное можно реализовать?
  13. В общем, что-то удалось наколхозить. uses ... {$IFDEF ANDROID} , FMX.pushnotification.Android, Androidapi.Helpers, Androidapi.JNI.App, Androidapi.JNI.JavaTypes, AndroidApi.JniBridge, System.Android.Notification, Androidapi.JNI.GraphicsContentViewText {$ELSE} , FMX.pushnotification.iOS, iOSapi.UIKit {$ENDIF} ; ... procedure TForm1.Button2Click(Sender: TObject); var {$IFDEF IOS} UIApp : UIApplication; UNType :UIUserNotificationType; {$ENDIF} {$IFDEF ANDROID} NM: JNotificationManager; {$ENDIF} begin Memo1.Lines.Clear; {$IFDEF ANDROID} NM := TJNotificationManager.Wrap( (TAndroidHelper.Context.getSystemService( TJContext.JavaClass.NOTIFICATION_SERVICE) as ILocalObject).GetObjectID); if NM.areNotificationsEnabled then Memo1.Lines.Add('Push Разрешено') else Memo1.Lines.Add('Push Отключено'); {$ENDIF} {$IFDEF IOS} UIApp := TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication); UNType := UIApp.currentUserNotificationSettings.types; if UNType = 0 then begin Memo1.Lines.Add('Push Отключено'); exit; end; if (UNType and UIUserNotificationTypeBadge) <> 0 then Memo1.Lines.Add('Ярлыки Разрешены'); if (UNType and UIUserNotificationTypeSound) <> 0 then Memo1.Lines.Add('Звук Разрешен'); if (UNType and UIUserNotificationTypeAlert) <> 0 then Memo1.Lines.Add('Шторка Разрешено'); {$ENDIF} end; Все как бы работает и показывает отключил пользователь пуши или нет, но в Андроиде в каком-то из документов было написано, что нужно проверять версию т.к. не на всех это работает. Но мне для теста это не надо было поэтому не запомнил где это видел
  14. Всем привет! Подскажите пожалуйста, а как понять разрешены или запрещены Push уведомления пользователем на iOS/Android устройстве. Ну, как бы понятно, что я могу отправлять пуши на полученный DeviceToken, но зачем их слать впустую если они на устройстве-клиенте запрещены?...
  15. Короче, просто переименовал .jks файл в .keystore и потом импортировал в провизион профайл. Все прошло.
  16. Всем привет! В общем удалил я keystore файл. Естественно обновление не приняли по другому, сгенеренному. Написал им в поддержку, что мол извините, не нарочно удалил. Они ответили: Все делал как написали и отправил им РЕМ файл. Получил ответ уже на Русском: А теперь сижу и думаю... А что мне с этим счастьем делать?.... Как я понял, keystore файл должен как-то соотноситься с сертификатом, который я им отправил. Но вот как его получить из jks и РЕМ файлов нигде не нашел. Кто-нибудь сталкивался с такой ситуацией?
  17. Светлана, вот как делаю я: procedure TMainClient.ОбновитьДанныеВПотоке begin TThread.CreateAnonymousThread(procedure () begin TThread.Synchronize (nil, //Из потока обращаемся к контролам только через главгый поток procedure () begin Показываем котролы запускаем мультик end); Выполняем обработку данных без использования визуальных элементов TThread.Synchronize(nil, procedure () begin Выполняем остановку мультика скрываем контролы end); end).Start; end;
  18. Ребя, сам разобрался. Спасибо всем переживающим ? Перенес апдейт листбокса туда, где он должен быть. Теперь кусочек стал выглядеть вот так: TThread.Synchronize(nil, procedure () begin lbTare.BeginUpdate; UpdateTareBalanceItems; Label7.Text := 'Обновлено'; lclCloseAnimationT; lbTare.EndUpdate; end); Теперь работает вот так: https://www.youtube.com/watch?v=XABighMePBo Если есть замечания по коду - поделитесь...
  19. Всем привет! Ребята: спасайте. Понимаю: что вопрос детский но не могу победить. Выручайте... В общем вот кусок кода: procedure TMainClient.lbTareMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); var ValidateAnswer:TValidateAnswer; begin if (not UpdateMouseDownT) then exit; UpdateMouseDownT := false; if (not UpdateDoT) then begin if (Layout4.Height <> 0) then lclCloseAnimationT; Exit; end; lclUpAnimationT; TThread.CreateAnonymousThread(procedure () begin TThread.Synchronize (nil, procedure () begin lbTare.BeginUpdate; Label7.Text := 'Обновляется'; end); ValidateAnswer := ValidateID; if ValidateAnswer = TValidateAnswer.aValid then begin ClientModule1.FDConnLocalSQLight.StartTransaction; try ClientModule1.GetTareBlanceToLocalBD; ClientModule1.FDConnLocalSQLight.Commit; except on E: Exception do begin ClientModule1.FDConnLocalSQLight.Rollback; TThread.Synchronize (nil, procedure () begin ShowToastMessage('Синхронизация прервана '+E.Message,TShowMessageType.aToastDlg); end); end; end; TThread.Synchronize(nil, procedure () begin UpdateTareBalanceItems; lclCloseAnimationT; Label7.Text := 'Обновлено'; lbTare.EndUpdate; end); end else begin TThread.Synchronize(nil, procedure () begin if (Layout4.Height <> 0) then lclCloseAnimationT; lbTare.EndUpdate; case ValidateAnswer of TValidateAnswer.aNotValid: ShowToastMessage('Код Регистрации Отклонен', TShowMessagetype.aToastDlg); TValidateAnswer.aNoConnection: ShowToastMessage('Нет Соедиения с Сервером Поставщика', TShowMessagetype.aToastDlg); end; end); end; end).Start; UpdateDoT := false; end; В се работает хорошо. Но вот есть одна проблема... Часть ЛистБокса не отрисовывается до окончания обновления данных. Вот как это выглядит в приложении:https://www.youtube.com/watch?v=NeZmUKwTfEk Видно, что внизу остается белая часть до тех пор, пока все не выполнится. Как ее победить - не знаю! Помогите...
  20. Ребят, спасибо всем за помощь! Опубликовалось и все его видят.
  21. Всем привет! Очередной вопрос... Домучил я наконец Play Market и они мне прислали вот такое письмо счастья (выдержка): Я посмотрел с 64 разрядного устройства в Play Market, но приложения по прежнему не видно. В документе по ссылке просто общие требования. В примере проверки 64 бит из этого документа у меня в контроле версий так и написано как в примере. Нужно что-то по новой загрузить или просто подождать?...
×
×
  • Создать...