juppy
Пользователи-
Постов
56 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Весь контент juppy
-
Есть такая библиотека https://github.com/amarildolacerda/KernowSoftwareFMX То, что на скриншотах - это компонент ksVirtualListView. Его работа показана в примере https://github.com/amarildolacerda/KernowSoftwareFMX/tree/master/Samples/Action Buttons Но мне не понравилось как он работает. Там ЭкшнБаттоны не тянутся за свайпом, а сами появляются поняв, что свайп сделан. На IOS такое поведение не очень ожидаемо. Но в целом работает очень даже миленько.
-
Всем привет! Есть приложение, которое по DataSnap в потоке подключается к серверу и тянет с него какие-то данные. Все работает хорошо и без сбоев. Но есть нюанс!!!! ??? Реализация следующая. Сервер SQL база. MyTread.Execute; try проверка доступности сервера except terminate end; Создание объектов для подключения к серверу Выставляем таймаут для TSQLConnection try открываем ClientDataSet читаем полученные данные except terminate end; Как бы упрощенно но все понятно. Так вот если в момент, когда после открытия ClientDataSet на мобильном устройстве пропадает связь с сервером, приложение зависает в бесконечном ожидании. Можно ли как-то красиво обрабатывать эту ситуацию? Или может есть какие-то шаблонные конструкции на этот счет. Можно конечно и колхоз наколхозить, но это всегда успеется. Хочется ведь все чтобы красиво... Вот есть ветка на эту тему, но сделал как там описано, ничего не ловится.
-
Всем привет! Из этой темы так и непонятно как прочитать свои сообщения, которые пришли когда приложение было "inactive or killed". В целом задача - собирать у себя в приложении отправленные пуши все, которые дошли до устройства. В IOS все работает очень красиво!. А вот в Андроиде не могу получить в приложение все сообщения, которые пришли по его токену. У меня в Андроиде событие OnReceiveNotificationEvent отрабатывает только когда приложение активно. Сейчас сижу, разбираюсь. В голове каша. Дайте пожалуйста какой-нибудь намек куда смотреть?...
-
Я сначала начал идти по пути примера Равиля. А потом просто попробовал вот так: tmpBody :=StringReplace(FDQuery1.FieldByName('Body').AsString, '\n', #13#10, [rfReplaceAll]); Работает на всех устройствах, которые проверял. И старые и новые все нормально переносится. ЗЫ '\n' в теле сообщения обозначает место переноса на сл.строчку.
-
Всем привет! А что, а что-то с Notifications накосячили? Пустое приложение запускается нормально Затем в 32 "Entitlement List" в поле "Recieve push notifications" ставлю TRUE и все... 32 битный проект при запуске на устройстве валится и пишет "Произошел сбой в работе приложения..." 64 битный нормально запускается. Но как только я добавляю рабочий код получения токена продолжается бесконечный спэш экран призапуске. Кто-нибудь сталкивался с подобной проблемой? А, забыл.. Все это касается Андройда
-
Да вот и я смотрю за алгоритмом работы, там именно высота айтема и положение по высоте как-то экспоненциально меняются. А на какой компонент самый подходящий для этого ЛистВью?
-
Всем привет! Что-то крутил в руках телефон и вот задумался... Приложение "Кошелек" ведь реально красиво сделано.. А на Delphi как что-то подобное можно реализовать?
-
В общем, что-то удалось наколхозить. 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; Все как бы работает и показывает отключил пользователь пуши или нет, но в Андроиде в каком-то из документов было написано, что нужно проверять версию т.к. не на всех это работает. Но мне для теста это не надо было поэтому не запомнил где это видел
-
Всем привет! Подскажите пожалуйста, а как понять разрешены или запрещены Push уведомления пользователем на iOS/Android устройстве. Ну, как бы понятно, что я могу отправлять пуши на полученный DeviceToken, но зачем их слать впустую если они на устройстве-клиенте запрещены?...
-
Всем привет! В общем удалил я keystore файл. Естественно обновление не приняли по другому, сгенеренному. Написал им в поддержку, что мол извините, не нарочно удалил. Они ответили: Все делал как написали и отправил им РЕМ файл. Получил ответ уже на Русском: А теперь сижу и думаю... А что мне с этим счастьем делать?.... Как я понял, keystore файл должен как-то соотноситься с сертификатом, который я им отправил. Но вот как его получить из jks и РЕМ файлов нигде не нашел. Кто-нибудь сталкивался с такой ситуацией?
-
Светлана, вот как делаю я: procedure TMainClient.ОбновитьДанныеВПотоке begin TThread.CreateAnonymousThread(procedure () begin TThread.Synchronize (nil, //Из потока обращаемся к контролам только через главгый поток procedure () begin Показываем котролы запускаем мультик end); Выполняем обработку данных без использования визуальных элементов TThread.Synchronize(nil, procedure () begin Выполняем остановку мультика скрываем контролы end); end).Start; end;
-
Ребя, сам разобрался. Спасибо всем переживающим ? Перенес апдейт листбокса туда, где он должен быть. Теперь кусочек стал выглядеть вот так: TThread.Synchronize(nil, procedure () begin lbTare.BeginUpdate; UpdateTareBalanceItems; Label7.Text := 'Обновлено'; lclCloseAnimationT; lbTare.EndUpdate; end); Теперь работает вот так: https://www.youtube.com/watch?v=XABighMePBo Если есть замечания по коду - поделитесь...
-
Всем привет! Ребята: спасайте. Понимаю: что вопрос детский но не могу победить. Выручайте... В общем вот кусок кода: 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 Видно, что внизу остается белая часть до тех пор, пока все не выполнится. Как ее победить - не знаю! Помогите...
-
Всем привет! Очередной вопрос... Домучил я наконец Play Market и они мне прислали вот такое письмо счастья (выдержка): Я посмотрел с 64 разрядного устройства в Play Market, но приложения по прежнему не видно. В документе по ссылке просто общие требования. В примере проверки 64 бит из этого документа у меня в контроле версий так и написано как в примере. Нужно что-то по новой загрузить или просто подождать?...