Александр Клопоцкий Posted February 2, 2021 Posted February 2, 2021 (edited) Название приложения: Фаберлик Подарки Платформа: 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, 2023 by Александр Клопоцкий 5 3 Quote
knsg12 Posted February 2, 2021 Posted February 2, 2021 @Александр Клопоцкий Т.е. я как понял вы напрямую подключаетесь к базе и держите коннект? С Юнидаком не работаю, поэтому интересно как там это организованно, на сколько это стабильно? Почему не используете http? Quote
Александр Клопоцкий Posted February 2, 2021 Author Posted February 2, 2021 Постоянно коннект не держу. Только в момент нажатия кнопки устанавливаю коннект, вставляю запись в таблицу, с сразу отключаюсь. Чтение чата делаю раз в минуту и отключаюсь. 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; 3 Quote
Andrey Zubov Posted February 5, 2021 Posted February 5, 2021 ну вообще чат логичнее всего сделать на вебсокетах или нотификейшенах, хотя если чат должен быть и на десктопе то уведомления отпадают и остаются только вебсокеты Quote
knsg12 Posted February 5, 2021 Posted February 5, 2021 Чат это дело второе, тут основной коннект напрямую идёт. Идея конечно интересная. Когда то помню тоже так пытался сделать, при первых попытках перехода с десктопа на вэб, но и вправду прямого коннекта не получилось, пришлось осваивать рестапи. Думаю этот способ очень даже можно использовать, если делать короткие соединения с базой для чтения и изменений, а в остальное время работать автономно. Quote
Vitaldj Posted February 5, 2021 Posted February 5, 2021 (edited) 12 минут назад, knsg12 сказал: Чат это дело второе, тут основной коннект напрямую идёт. Идея конечно интересная. Когда то помню тоже так пытался сделать, при первых попытках перехода с десктопа на вэб, но и вправду прямого коннекта не получилось, пришлось осваивать рестапи. Думаю этот способ очень даже можно использовать, если делать короткие соединения с базой для чтения и изменений, а в остальное время работать автономно. Я с прошлого года тоже стал использовать почти прямой коннект к БД. Через RemoteDB. Это в чистом виде как трехзвенка, но не через http, а напрямую в БД. Очень удобно! Причем это обернуто все в ssl и авторизацию. Пол года использую - кайфую). Но! На серваке надо ставить «переходник» в виде специального сервиса. А так как у меня свой виртуальный сервер - с этим нет пробем. Edited February 5, 2021 by Vitaldj Quote
knsg12 Posted February 5, 2021 Posted February 5, 2021 RemoteDB это в поставке TMS? Наверное платная штука. Хорошо, спасибо за совет, гляну в эту сторону. Quote
Vitaldj Posted February 5, 2021 Posted February 5, 2021 45 минут назад, knsg12 сказал: RemoteDB это в поставке TMS? Наверное платная штука. Хорошо, спасибо за совет, гляну в эту сторону. Да ТМS. Но работает как часы! Да платно. Но повторная через год подписка 30%. Quote
Andrey Zubov Posted February 8, 2021 Posted February 8, 2021 Помимо remotedb там в комплекте не менее замечательный инструменты, тот же sparkle и xdata, первый это кастомный кроссплатформенный веб-сервер, второе это restapi/api сервер подключаемый к sparkle одной строчкой в коде. Еще была репликация между 2 БД, кажется echo называется, но его не использовал. Quote
k0de Posted February 13, 2021 Posted February 13, 2021 Лично я юзаю HTTP запросы и на хостинге PHP или Python и норм. Всё отлично пашет. К тому же перенести скрипты и бд на любой дешевый хостинг заказчик может всегда. Но каждый сам танцует свою мульку. А приложение выглядит прикольно. Через годик думаю вообще будет как сказка пахать и выглядить! ) 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.