Bob32
-
Постов
109 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Активность репутации
-
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-ом налетел на такую проблему - при первом запуске пользователю задается вопрос про оба этих пермишинса (откуда он понимает, что это они - не понимаю - строки то пустые!) если пользователь разрешит их - все ок - приложение работает. если не разрешит - в этот запуск камера и локейшн сенсор не работают (что нормально), а вот при следющем запуске приложения - оно просто вылетает на старте - и никаких разрешений снова никто ни у кого не спрашивает )
какие мысли? )
-
Bob32 получил реакцию от Ingalime в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
Тоже ее получал. Потом убрал поддержку айпада и так выложил. Она уйдёт .
-
Bob32 получил реакцию от Ingalime в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
пощелкай там в меню Файндера - Открыть Терминал по этому пути
-
Bob32 получил реакцию от Ingalime в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
Идёшь по ссылке. Там инструкция на 4+ листа. К ней есть пара Вложенных архивов.
Берёшь первый, где лежат иконки, распаковываешь. Подкладываешь свои (там по умолчанию стандартные дельфийские), плюс эту самую иконку - 1024 на 1024.
потом это копируешь на комп с маком и xcode. Из командной строки запускаешь строку с длинными параметрами. По итогам в папке получаешь неск файлов, копируешь их на комп с дельфи, подкладываешь в файл проекта, вместе с файлами ещё одного архива, потом в параметрах деплоймента проекта отключаешь стандартные иконки, добавляешь штук 6 этих левых файлов, предварительно ещё правишь файл plist.info. Потом все это компилируешь и получаешь Новый ipa файл. Его и заливаешь на эпл стор.
в инструкции все подробно написано.
пробовал на 10.3.3 - работает.
-
Bob32 получил реакцию от gonzales в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
Идёшь по ссылке. Там инструкция на 4+ листа. К ней есть пара Вложенных архивов.
Берёшь первый, где лежат иконки, распаковываешь. Подкладываешь свои (там по умолчанию стандартные дельфийские), плюс эту самую иконку - 1024 на 1024.
потом это копируешь на комп с маком и xcode. Из командной строки запускаешь строку с длинными параметрами. По итогам в папке получаешь неск файлов, копируешь их на комп с дельфи, подкладываешь в файл проекта, вместе с файлами ещё одного архива, потом в параметрах деплоймента проекта отключаешь стандартные иконки, добавляешь штук 6 этих левых файлов, предварительно ещё правишь файл plist.info. Потом все это компилируешь и получаешь Новый ipa файл. Его и заливаешь на эпл стор.
в инструкции все подробно написано.
пробовал на 10.3.3 - работает.
-
Bob32 отреагировална krapotkin в THTTPClient - непонятная ошибка при POST-е json на сервер
Задача любой синхронизации - не дать разным потокам одновременно изменять данные.
Можете себе представить принтер, на который печатают несколько человек. Если не выстроить их в очередь, то результат вам не понравится.
Ровно так же и с объектами программы. Если к ним есть доступ у нескольких потоков, то результат взаимодействия почти гарантированно приведет к ошибке программы.
Synchronize ставит действие в очередь на ожидание главного потока. Как только тот освобождается, он выполняет это действие и оба потока идут дальше. Главный - своей дорогой, вызвавший Synchronize - своей.
Достаточно просто запомнить - экран - один, вызов только через синхронизацию.
Более полное объяснение заповедей многопоточного программирования несложно найти в сети)
-
Bob32 отреагировална krapotkin в THTTPClient - непонятная ошибка при POST-е json на сервер
код приложен, запускайте и играйтесь до просветления
-
Bob32 отреагировална krapotkin в THTTPClient - непонятная ошибка при POST-е json на сервер
это зависит от того, кто программировал этот сервер)
но вы же ему по сути передаете "отвечай как хочешь". и первый в списке html
-
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
-
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
-
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.
-
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;
-
Bob32 отреагировална krapotkin в Типовая задача доступа к данным - Нужен дельный совет
по вопросам.
1) выбор на хостингах невелик - MySQL, Postgres. Я PG выбрал чисто в силу интереса и он вроде поближе к стандартам, и у него ХП и другие всякие штуки.... Сижу на SWEB.RU. Опять же просто потому что давно. Есть и masterhost и любой другой крупный провайдер подойдет.
2) не путаем хостинг с бэкенд-сервером (BAS). Типа Firebase или Amazon или еще туча. на хостинге у вас все свое. что написали то и работает. на BAS есть много приятных плюшек. Довольно платных ессно. Зато и push и email рассылки и админка...
3) MSSQL не вариант. Веб в основном на Linux.
4) обычно просто THttpClient. На нем нормально пишется клиентская часть API
5) обычная схема. просто с нуля некоторые вещи пилить. зато бесплатно. Практика показывает что иногда лучше заплатить и получить богатое приложение сразу. но иногда как написал Евгений, потом можно упереться в ограничения сервисов. Но можно решать проблемы по мере поступления...
-
Bob32 отреагировална #WAMACO в Типовая задача доступа к данным - Нужен дельный совет
Пользуюсь и платной и бесплатной версией.
Описание очень подробное http://www.tmssoftware.biz/Download/Manuals/tmsfmxcloudpackdevguide.pdf
Все основные варианты взаимодействия описаны подробно.
-
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 - если готовы разбираться в нюансах его работы.
Вот как то так.
-
Bob32 отреагировална #WAMACO в Типовая задача доступа к данным - Нужен дельный совет
http://mraven.ru/RavenLink.html
вот еще простейший REST сервер. очень просто использовать.
причем не нужен architect edition, community подойдет даже
-
Bob32 отреагировална Barbanel в Типовая задача доступа к данным - Нужен дельный совет
Согласен, у каждого свое.
Мое - из опыта. Мы в свое время заморочились с "правильным" подходом, и прозевали конкурента с похожим функционалом. Было пипец как обидно.
FireMonkey без сомнений имеет свои недостатки и глюки. Но для тех кто знаком с Дельфи - это простой способ выпуститься на мобильных устройствах.
FireMonkey без сомнений проигрывает нативным языкам, но выигрывает в скорости разработки.
Что выбирать - каждый решает сам исходя из своих задач и возможностей.
-
Bob32 отреагировална haword в Типовая задача доступа к данным - Нужен дельный совет
у каждого свое мнение. зная глючность firemonkey, человек вопрется в кучу косяков. начнет из разгребать. народ будет устанавливать его ПО отлавливать глюки и минусовать в магазинах. если хоть ка кто взлетит и сможет пойти к инвесторам, то придется тогда полностью выгонять всех кто писал и заново набирать команду чтобы переписать на других языках. по моему так себе путь.
а если изначально сделать на нативных языках, да кое как чтобы лишь бы запустилось, то потом уже много переделывать не надо будет с нуля переписывать.
но тут конечно выбор каждого как ему что делать.
-
Bob32 отреагировална haword в Типовая задача доступа к данным - Нужен дельный совет
бесплатный совет - для СТАРТАПА с количеством пользователей хотя бы от 1000 человек, лучше использовать нативные средства разработки, Xcode и Android Studio, если хотите что-то серьезное написать. если просто поиграться на взлетит не взлетит а если что потом перепишем на натив, то да, можно и на делфи.
бесплатных хостингов БД нет.
-
Bob32 отреагировална krapotkin в Рисование маркеров на определенных уровнях Zoom-a
маркерами управляете только вы сами
поэтому не выбрасывайте ссылки на созданные маркеры, а самостоятельно добавляйте удаляйте их при смене масштаба карты
-
Bob32 получил реакцию от #WAMACO в Ориентация на Север и углы наклона телефона
Ребята, есть проблемы.
1) наши углы - не верные. особенно третий угол- он вообще непонятно что представляет.
понимаю, что все что мы делаем - это вызываем стандартные методы (и они вызываются и работают) - но факт остается фактом.
2) проблема, которую описал я после первой компиляции программы- это не проблема ориентации экрана телефона! это другая проблема. моя проблема это то - что при одной и той же портретной ориентации телефона азимут на север изменится на 180% при подьеме телефона на 90 градусов (из горизонтальной плоскости в вертикальную - с той же ориентацией телефона).
Для того, чтобы это было понятней - привожу две программы - первая это апк файл из первой статьи этого автора с хабра (где используется устаревший метод) - файл androidsensors.zip
вторая программа - это наш проект в "доповоротоном" виде (в первоначальном виде) - файл sensman.zip
третья программа - это наша программа с фиксом по ориантации экрана - sensman_fix.zip
AndroidSensors.zip
SensMan.zip
SensMan_fix.zip
-
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)
-
Bob32 получил реакцию от Barbanel в Ориентация на Север и углы наклона телефона
конечно выложу, если ума хватит ))))
откомпилировал Ваше приложение = все работает, получаем данные акселерометра, магнитного датчика и углы (их я перевел в градусы для большей наглядности).
но тут наступает вот какой момент (возможно, Вы именно о нем писали, когда упоминали об ориентации экрана)…
когда телефон горизонтально (смотришь на экран сверху) - четко видно, что в первом углу = Азимут на север, который меняется от -180 до +180. 0 - север.
когда поднимаешь телефон вертикально (смотришь на телефон сбоку) - этот угол "едет" - те он начинает показывать что-то, но не азимут на север.
предыдущая статья на хабре этого автора (я тоже читал обе эти статьи когда пытался разобраться сам), где он использует устаревший метод и потом выкладывает апк-шку - так вот в этой предыдущей версии (в ее апк-шке) углы определяются исключительно верно- поднимай телефон, крути, а азимут на север показывается четко. аналогично по двум другим углам. тем этот метод меня и зацепил....
Вы об этом говорили, когда писали про "ориентацию экрана" или имели ввиду что-то другое?