Posted February 2, 20214 yr Название приложения: Фаберлик Подарки Платформа: Android 32 bit, Android 64 bit Поддерживаемые версии ОС: Android 5.0 и новее Необходимое свободное место: до 80 Мб Описание: Приложение "Фаберлик Подарки" предназначено для для сопровождения постоянных покупателей продукции Фаберлик. Приложение соединяется с базой данных MySQL на обычном хостинге сайта. Для подключения использую компоненты UniDAC, SecureBridge. Каждому скачиванию присваивается порядковый номер, сохраняется в телефоне, по нему отбираются и показываются сообщения чата для данного клиента. При приходе сообщения делаю "Local notification" из примера. Программа администрирования на Delphi 10.4.1 VCL компонентах. Ссылка на приложение: https://play.google.com/store/apps/details?id=faberlic24.by Edited December 12, 20231 yr by Александр Клопоцкий
February 2, 20214 yr @Александр Клопоцкий Т.е. я как понял вы напрямую подключаетесь к базе и держите коннект? С Юнидаком не работаю, поэтому интересно как там это организованно, на сколько это стабильно? Почему не используете http?
February 2, 20214 yr Author Постоянно коннект не держу. Только в момент нажатия кнопки устанавливаю коннект, вставляю запись в таблицу, с сразу отключаюсь. Чтение чата делаю раз в минуту и отключаюсь. http - будет прослойка, нужно будет все поля таблиц через нее прописывать, неудобно. Хочется работать напрямую с SQL, пока ошибок с обрывом соединения в приложении не было. SecureBridge держит SSH подключение в момент коннекта, хостеры не дают подключаться напрямую к базе на хостинге без SSH сертификата. procedure TdmMain.Hoster_FL_REG_Insert; var UniStoredProc: TUniStoredProc; begin if ((PPL_SURNAME <> '') or (PPL_FIRSTNAME <> '') or (PPL_PHONE <> '')) then begin Hoster_Connect; // Подключение к хостингу UniStoredProc := TUniStoredProc.Create(nil); try UniStoredProc.Connection := UniConnection; UniStoredProc.StoredProcName := 'st_reg_insert'; UniStoredProc.PrepareSQL; UniStoredProc.ParamByName('P_APP_ID').ParamType := ptInput; UniStoredProc.ParamByName('P_APP_ID').DataType := ftInteger; UniStoredProc.ParamByName('P_APP_ID').AsInteger := StrToInt(APP_ID); UniStoredProc.ParamByName('P_PPL_SURNAME').ParamType := ptInput; UniStoredProc.ParamByName('P_PPL_SURNAME').DataType := ftString; UniStoredProc.ParamByName('P_PPL_SURNAME').AsString := PPL_SURNAME; UniStoredProc.ParamByName('P_PPL_FIRSTNAME').ParamType := ptInput; UniStoredProc.ParamByName('P_PPL_FIRSTNAME').DataType := ftString; UniStoredProc.ParamByName('P_PPL_FIRSTNAME').AsString := PPL_FIRSTNAME; UniStoredProc.ParamByName('P_PPL_PHONE').ParamType := ptInput; UniStoredProc.ParamByName('P_PPL_PHONE').DataType := ftString; UniStoredProc.ParamByName('P_PPL_PHONE').AsString := PPL_PHONE; UniStoredProc.Execute; finally UniStoredProc.Free; end; Hoster_Disconnect; // Отключение от хостинга end; end; procedure TdmMain.Hoster_Connect; begin ScFileStorage.Path := TPath.GetDocumentsPath; // Папка на Android ScSSHClient.Connected := True; ScSSHChannel.Connected := True; if ScSSHChannel.Connected then UniConnection.Connected := True else TfgDialogs.ShowMessage('SSH - Not Connected!'); end; procedure TdmMain.Hoster_Disconnect; begin ScSSHChannel.Connected := False; ScSSHClient.Connected := False; end;
February 5, 20214 yr ну вообще чат логичнее всего сделать на вебсокетах или нотификейшенах, хотя если чат должен быть и на десктопе то уведомления отпадают и остаются только вебсокеты
February 5, 20214 yr Чат это дело второе, тут основной коннект напрямую идёт. Идея конечно интересная. Когда то помню тоже так пытался сделать, при первых попытках перехода с десктопа на вэб, но и вправду прямого коннекта не получилось, пришлось осваивать рестапи. Думаю этот способ очень даже можно использовать, если делать короткие соединения с базой для чтения и изменений, а в остальное время работать автономно.
February 5, 20214 yr 12 минут назад, knsg12 сказал: Чат это дело второе, тут основной коннект напрямую идёт. Идея конечно интересная. Когда то помню тоже так пытался сделать, при первых попытках перехода с десктопа на вэб, но и вправду прямого коннекта не получилось, пришлось осваивать рестапи. Думаю этот способ очень даже можно использовать, если делать короткие соединения с базой для чтения и изменений, а в остальное время работать автономно. Я с прошлого года тоже стал использовать почти прямой коннект к БД. Через RemoteDB. Это в чистом виде как трехзвенка, но не через http, а напрямую в БД. Очень удобно! Причем это обернуто все в ssl и авторизацию. Пол года использую - кайфую). Но! На серваке надо ставить «переходник» в виде специального сервиса. А так как у меня свой виртуальный сервер - с этим нет пробем. Edited February 5, 20214 yr by Vitaldj
February 5, 20214 yr RemoteDB это в поставке TMS? Наверное платная штука. Хорошо, спасибо за совет, гляну в эту сторону.
February 5, 20214 yr 45 минут назад, knsg12 сказал: RemoteDB это в поставке TMS? Наверное платная штука. Хорошо, спасибо за совет, гляну в эту сторону. Да ТМS. Но работает как часы! Да платно. Но повторная через год подписка 30%.
February 8, 20214 yr Помимо remotedb там в комплекте не менее замечательный инструменты, тот же sparkle и xdata, первый это кастомный кроссплатформенный веб-сервер, второе это restapi/api сервер подключаемый к sparkle одной строчкой в коде. Еще была репликация между 2 БД, кажется echo называется, но его не использовал.
February 13, 20214 yr Лично я юзаю HTTP запросы и на хостинге PHP или Python и норм. Всё отлично пашет. К тому же перенести скрипты и бд на любой дешевый хостинг заказчик может всегда. Но каждый сам танцует свою мульку. А приложение выглядит прикольно. Через годик думаю вообще будет как сказка пахать и выглядить! )
Create an account or sign in to comment