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

Bob32

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

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

  • Посещение

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

    1

Активность репутации

  1. Like
    Bob32 получил реакцию от Edward Tarasov в Вопрос по запросу permissions в IOS   
    Добрый день!
    есть вот такой, хорошо работающий под андроидом код запроса пользовательских разрешений:
    {$IFDEF ANDROID}
      FPermissionCamera := JStringToString(TJManifest_permission.JavaClass.CAMERA);
      FPermissionGPS := JStringToString(TJManifest_permission.JavaClass.ACCESS_FINE_LOCATION);
    {$ENDIF}
      PermissionsService.RequestPermissions([FPermissionCamera,FPermissionGPS], AccessCameraPermissionRequestResult, DisplayRationale);
     
    как мы видим - под андроидом FPermissionCamera и FPermissionCamera заполняются соответствующими строковыми идентификаторами разрешений.
    Вопрос - а как под IOS-ом?
    Откуда система знает какие пермишинсы мы запрашиваем? эти переменные - просто пустые будут до вызова PermissionsService.RequestPermissions
    Спрашиваю потому, что есть приложение с такими разрешениями, которое под Андроидом работает хорошо.
    Под ios-ом налетел на такую проблему - при первом запуске пользователю задается вопрос про оба этих пермишинса (откуда он понимает, что это они - не понимаю - строки то пустые!) если пользователь разрешит их - все ок - приложение работает. если не разрешит - в этот запуск камера и локейшн сенсор не работают (что нормально), а вот при следющем запуске приложения - оно просто вылетает на старте - и никаких разрешений снова никто ни у кого не спрашивает )
    какие мысли? )
  2. Like
    Bob32 получил реакцию от Ingalime в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей   
    Тоже ее получал. Потом убрал поддержку айпада и так выложил. Она уйдёт .
  3. Like
  4. Like
    Bob32 получил реакцию от Ingalime в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей   
    Идёшь по ссылке. Там инструкция на 4+ листа. К ней есть пара Вложенных архивов.
    Берёшь первый, где лежат иконки, распаковываешь. Подкладываешь свои (там по умолчанию стандартные дельфийские), плюс эту самую иконку - 1024 на 1024.
    потом это копируешь на комп с маком и xcode. Из командной строки запускаешь строку с длинными параметрами. По итогам в папке получаешь неск файлов, копируешь их на комп с дельфи, подкладываешь в файл проекта, вместе с файлами ещё одного архива, потом в параметрах деплоймента проекта отключаешь стандартные иконки, добавляешь штук 6 этих левых файлов, предварительно ещё правишь файл plist.info. Потом все это компилируешь и получаешь Новый ipa файл. Его и заливаешь на эпл стор.
     
    в инструкции все подробно написано.
    пробовал на 10.3.3 - работает.
  5. Thanks
    Bob32 получил реакцию от gonzales в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей   
    Идёшь по ссылке. Там инструкция на 4+ листа. К ней есть пара Вложенных архивов.
    Берёшь первый, где лежат иконки, распаковываешь. Подкладываешь свои (там по умолчанию стандартные дельфийские), плюс эту самую иконку - 1024 на 1024.
    потом это копируешь на комп с маком и xcode. Из командной строки запускаешь строку с длинными параметрами. По итогам в папке получаешь неск файлов, копируешь их на комп с дельфи, подкладываешь в файл проекта, вместе с файлами ещё одного архива, потом в параметрах деплоймента проекта отключаешь стандартные иконки, добавляешь штук 6 этих левых файлов, предварительно ещё правишь файл plist.info. Потом все это компилируешь и получаешь Новый ipa файл. Его и заливаешь на эпл стор.
     
    в инструкции все подробно написано.
    пробовал на 10.3.3 - работает.
  6. Thanks
    Bob32 отреагировална krapotkin в THTTPClient - непонятная ошибка при POST-е json на сервер   
    Задача любой синхронизации - не дать разным потокам одновременно изменять данные.
    Можете себе представить принтер, на который печатают несколько человек. Если не выстроить их в очередь, то результат вам не понравится.
    Ровно так же и с объектами программы. Если к ним есть доступ у нескольких потоков, то результат взаимодействия почти гарантированно приведет к ошибке программы.
    Synchronize ставит действие в очередь на ожидание главного потока. Как только тот освобождается, он выполняет это действие и оба потока идут дальше. Главный - своей дорогой, вызвавший Synchronize - своей.
    Достаточно просто запомнить - экран - один, вызов только через синхронизацию.
    Более полное объяснение заповедей многопоточного программирования несложно найти в сети)
  7. Like
    Bob32 отреагировална krapotkin в THTTPClient - непонятная ошибка при POST-е json на сервер   
    код приложен, запускайте и играйтесь до просветления
  8. Like
    Bob32 отреагировална krapotkin в THTTPClient - непонятная ошибка при POST-е json на сервер   
    это зависит от того, кто программировал этот сервер)
    но вы же ему по сути передаете "отвечай как хочешь". и первый в списке html
     
     
  9. Thanks
    Bob32 отреагировална Slym в THTTPClient - непонятная ошибка при POST-е json на сервер   
    Bytes:=TEncoding.UTF8.GetBytes(Memo1.Lines.Text);
    BytesStream:=TBytesStream.Create(Bytes);
    try
    HTTPResponse:=FHTTPClient.Post('https://securepay.tinkoff.ru/v2/Init', ByteStream);
    .....
    finally
      BytesStream.Free;
    end
  10. Thanks
    Bob32 отреагировална krapotkin в Получение времени от серверов времени   
    если даже не использовать NTP
    При каждом HTTP запросе в ответе приходят заголовки. Например
    Connection: keep-alive
    Strict-Transport-Security: max-age=0
    Content-Encoding: 
    Content-Type: text/html; charset=utf-8
    Date: Fri, 05 Apr 2019 07:02:28 GMT
    Server: nginx
     
  11. Thanks
    Bob32 отреагировална krapotkin в Получение времени от серверов времени   
    TIdTime is a client implementation of the Time Protocol as described in the Internet Standards document:

    RFC 868 - Time Protocol (http://www.rfc-editor.org/rfc/rfc868.txt)

    Time is a simple protocol for synchronizing time on a local network. For a time protocol with higher accuracy over several networks, use TIdSNTP. To retrieve the current date and time in human-readable form, use TIdDayTime.

    Please note that the Time Protocol in its current form cannot handle most dates after the year 2035. This limitation is stated in RFC 868.
  12. Thanks
    Bob32 отреагировална Евгений Корепов в Получение времени от серверов времени   
    Протокол SNTP
      Помимо NTP, существует упрощенная версия этого протокола - SNTP (Simple Network Time Protocol). Он реализован для синхронизации времени конечным клиентом, поскольку все преимущества протокола NTP проявляются именно в сети серверов, а для получения показаний конечным пользователем NTP излишне сложен. Поэтому для синхронизации времени конечными компьютерами и серверами был предложен протокол SNTP (SNTPv3: 1992 г., RFC1361 и 1995 г., RFC1769; SNTPv4 включён как подпротокол в NTPv4).
    На самом деле SNTP - это не новый протокол, а способ использования NTP-пакетов и NTP-серверов в приложениях, где не требуется высокоточное время, либо оно недостижимо. В этом случае клиент использует только часть информации UDP-пакета NTP-сервера. SNTP-клиент может работать с любыми версиями NTP-серверов, и кроме них - с особыми SNTP-серверами, которые в откликах заполняют только необходимые данные UDP-пакета.
    Таким образом, "облегченный" SNTP образует не сеть синхронизирующихся серверов, а пары "клиент-сервер". Любой NTP-сервер является одновременно SNTP-сервером. Клиент, который не передаёт полученное время дальше, может работать как NTP- или SNTP-клиент, в зависимости от условий. Для SNTP, как и для NTP, зарезервирован 123-й UDP-порт.
     
    Uses IdSNTP, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient; .... procedure TForm1.Button2Click(Sender: TObject); Var IdSNTP: TIdSNTP; begin IdSNTP:=TIdSNTP.Create(Self); IdSNTP.Host := 'ntp1.stratum2.ru'; ShowMessage(DateTimeToStr(IdSNTP.DateTime)); IdSNTP.Free; end;  
  13. Thanks
    Bob32 отреагировална krapotkin в Типовая задача доступа к данным - Нужен дельный совет   
    по вопросам.
    1) выбор на хостингах невелик - MySQL, Postgres.  Я PG выбрал чисто в силу интереса и он вроде поближе к стандартам, и у него ХП и другие всякие штуки.... Сижу на SWEB.RU. Опять же просто потому что давно. Есть и masterhost и любой другой крупный провайдер подойдет.
    2) не путаем хостинг с бэкенд-сервером (BAS). Типа Firebase или Amazon или еще туча. на хостинге у вас все свое. что написали то и работает. на BAS есть много приятных плюшек. Довольно платных ессно. Зато и push и email рассылки и админка...
    3) MSSQL не вариант. Веб в основном на Linux.
    4) обычно просто THttpClient. На нем нормально пишется клиентская часть API
    5) обычная схема. просто с нуля некоторые вещи пилить. зато бесплатно. Практика показывает что иногда лучше заплатить и получить богатое приложение сразу. но иногда как написал Евгений, потом можно упереться в ограничения сервисов. Но можно решать проблемы по мере поступления...
     
  14. Thanks
    Bob32 отреагировална #WAMACO в Типовая задача доступа к данным - Нужен дельный совет   
    Пользуюсь и платной и бесплатной версией.
    Описание очень подробное http://www.tmssoftware.biz/Download/Manuals/tmsfmxcloudpackdevguide.pdf
    Все основные варианты взаимодействия описаны подробно.
  15. Thanks
    Bob32 отреагировална Евгений Корепов в Типовая задача доступа к данным - Нужен дельный совет   
    1. Хостинг рекомендую https://masterhost.ru/service/hosting/individual/ , это один из старейших и надежнейших хостеров России, там вы получите сразу все вам необходимое - MySQL, PHP любимой версии, если проект попрет, то сможете добавлять процессоры, память и т.д. Так же сможете зарегить домен под это дело, и при надобности получить SSL сертификат на этот домен. Все остальные хостинги  игнорируйте, по крайней мере Российские. За почти 20 лет использования, мастерхост ни разу не подвел, а только радовал новыми плюшками.

    Реализация в вашем случае примерно такая:
    1. MySQL на хостере - обеспечит вам работу и 10 миллионов активных пользователей. Но важно правильно  спланировать структуру базы, структуру таблиц и структуру индексов таблиц. Если вы в этом не профи, то лучше нанять профи - ибо это фундамент, который потом очень сложно будет изменить.
    2. PHP на хостере - прокладка между базой и запросами/ответами приложения. Рекомендую использовать самую свежую версию PHP, чтоб потом не пришлось перекраивать код удаляя deprecated функции и конструкции.
    3. Протокол обмена - REST. Не вздумайте погружаться в теорию, читать про RESTful и пытаться реализовывать, этим занимаются только люди под тяжелыми наркотиками и обычно без единого законченного реального проекта. Достаточно того что приложение будет отправлять на сервер GET запросы получать JSON ответы. Можете подогнать протокол под существующие в Delphi компоненты TRESTClient, а можете и сами на стороне приложения разгребать JSON и получать нужные данные. Это совсем не сложно.
    4. Приложение - посылает на сервер HTTP GET (ну или POST) запросы посредством THTTPClient, получает ответы в виде JSON, парсит их и так далее. Все содержимое предыдущего предложения - в отдельном потоке. Ну или используйте готовый TRESTClient - если готовы разбираться в нюансах его работы.
    Вот как то так.
  16. Thanks
    Bob32 отреагировална #WAMACO в Типовая задача доступа к данным - Нужен дельный совет   
    http://mraven.ru/RavenLink.html
    вот еще простейший REST сервер. очень просто использовать. 
    причем не нужен architect edition, community подойдет даже
     
  17. Thanks
    Bob32 отреагировална Barbanel в Типовая задача доступа к данным - Нужен дельный совет   
    Согласен, у каждого свое.
    Мое - из опыта. Мы в свое время заморочились с "правильным" подходом, и прозевали конкурента с похожим функционалом. Было пипец как обидно.
    FireMonkey без сомнений имеет свои недостатки и глюки. Но для тех кто знаком с Дельфи - это простой способ выпуститься на мобильных устройствах.
    FireMonkey без сомнений проигрывает нативным языкам, но выигрывает в скорости разработки.
    Что выбирать - каждый решает сам исходя из своих задач и возможностей.
  18. Thanks
    Bob32 отреагировална haword в Типовая задача доступа к данным - Нужен дельный совет   
    у каждого свое мнение. зная глючность firemonkey, человек вопрется в кучу косяков. начнет из разгребать. народ будет устанавливать его ПО отлавливать глюки и минусовать в магазинах. если хоть ка кто взлетит и сможет пойти к инвесторам, то придется тогда полностью выгонять всех кто писал и заново набирать команду чтобы переписать на других языках. по моему так себе путь.
    а если изначально сделать на нативных языках, да кое как чтобы лишь бы запустилось, то потом уже много переделывать не надо будет с нуля переписывать. 
    но тут конечно выбор каждого как ему что делать.
  19. Thanks
    Bob32 отреагировална haword в Типовая задача доступа к данным - Нужен дельный совет   
    бесплатный совет - для СТАРТАПА с количеством пользователей хотя бы от 1000 человек, лучше использовать нативные средства разработки, Xcode и Android Studio, если хотите что-то серьезное написать. если просто поиграться на взлетит не взлетит а если что потом перепишем на натив, то да, можно и на делфи.
    бесплатных хостингов БД нет. 
  20. Thanks
    Bob32 отреагировална krapotkin в Рисование маркеров на определенных уровнях Zoom-a   
    маркерами управляете только вы сами
    поэтому не выбрасывайте ссылки на созданные маркеры, а самостоятельно добавляйте удаляйте их при смене масштаба карты
  21. Like
    Bob32 получил реакцию от #WAMACO в Ориентация на Север и углы наклона телефона   
    Ребята, есть проблемы.
    1) наши углы - не верные. особенно третий угол- он вообще непонятно что представляет.
    понимаю, что все что мы делаем - это вызываем стандартные методы (и они вызываются и работают) - но факт остается фактом.
    2) проблема, которую описал я  после первой компиляции программы- это не проблема ориентации экрана телефона! это другая проблема. моя проблема это то - что при одной и той же портретной ориентации телефона азимут на север изменится на 180% при подьеме телефона на 90 градусов (из горизонтальной плоскости в вертикальную - с той же ориентацией телефона).
     
    Для того, чтобы это было понятней - привожу две программы - первая это апк файл из первой статьи этого автора с хабра (где используется устаревший метод) - файл androidsensors.zip
    вторая программа - это наш проект в "доповоротоном" виде (в первоначальном виде) - файл sensman.zip
    третья программа - это наша программа с фиксом по ориантации экрана - sensman_fix.zip
    AndroidSensors.zip
    SensMan.zip
    SensMan_fix.zip
  22. Like
    Bob32 отреагировална mazayhin в Ориентация на Север и углы наклона телефона   
    После получения матрицы, определяете поворот устройства через IFMXScreenService.GetScreenOrientation к примеру, или опять же, напрямую через api.
    Получаете углы (var x, y: integer; OutMatrix: TJavaArray<single>(16)):
    0: ничего не делаем, в т.ч. ремап
    90: X := TJSensorManager.JavaClass.AXIS_Y; Y := TJSensorManager.JavaClass.AXIS_MINUS_X;
    180: X := TJSensorManager.JavaClass.AXIS_X; Y := TJSensorManager.JavaClass.AXIS_MINUS_Y;
    270: X := TJSensorManager.JavaClass.AXIS_MINUS_Y; Y := TJSensorManager.JavaClass.AXIS_X;
    TJSensorManager.JavaClass.remapCoordinateSystem(FMatrix(изначальная матрица), x, y, OutMatrix)
    TJSensorManager.JavaClass.getOrientation(OutMatrix, FOrientation)
  23. Like
    Bob32 получил реакцию от Barbanel в Ориентация на Север и углы наклона телефона   
    конечно выложу, если ума хватит ))))
    откомпилировал Ваше приложение = все работает, получаем данные акселерометра, магнитного датчика и углы (их я перевел в градусы для большей наглядности).
    но тут наступает вот какой момент (возможно, Вы именно о нем писали, когда упоминали об ориентации экрана)…
    когда телефон горизонтально (смотришь на экран сверху) - четко видно, что в первом углу = Азимут на север, который меняется от -180 до +180. 0 - север.
    когда поднимаешь телефон вертикально (смотришь на телефон сбоку) - этот угол  "едет" - те он начинает показывать что-то, но не азимут на север.
    предыдущая статья на хабре этого автора (я тоже читал обе эти статьи когда пытался разобраться сам), где он использует устаревший метод и потом выкладывает апк-шку - так вот в этой предыдущей версии (в ее апк-шке) углы определяются исключительно верно- поднимай телефон, крути, а азимут на север показывается четко. аналогично по двум другим углам. тем этот метод меня и зацепил....
    Вы об этом говорили, когда писали про "ориентацию экрана" или имели ввиду что-то другое?
×
×
  • Создать...