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

Edward Tarasov

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

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

  • Посещение

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

    2

Сообщения, опубликованные Edward Tarasov

  1. Ну в принципе, что и следовало ожидать - мне отвечал сервер, неявно правда, что "идешь на*ер, по причине конченный далб**б"?

    Но так как !!смотри выше, распознать я это смог спустя день. 

    короче -  параметры в GET запросе, в теле не передаются! (вдруг кто возьмет для реализации пример отсюда - 

    и попытается его применить для себя) ?

    Тему наверно можно закрывать.

  2. 7 часов назад, krapotkin сказал:

    Проблема на серверной стороне. 99.9%

    Обычно такая шутка - результат редиректа, потому что редиректы POST c кодами 301 и 302 это всегда GET. Есть редиректы 307, 308, они оставляют тип исходного запроса.

    Есть еще глубоко спрятанное и неочевидно названное свойство в THttpClient.RedirectsWithGET, там тоже можно поуправлять.

    Короче.

    1) отключите HandleRedirects и смотрите, что получится реально. Скорее всего будет приходить ответ, что произошел redirect, ищите на сервере, кто редиректит

    2) придумайте что выбрать их вышеописанного для решения проблемы

    Блин.. все перерыл - не знаю что там может перенаправлять... вот результаты работы REST debugger - видно что при отправке get все норм работает - они и понятно, в роутах только get прописан. а при post вылетает ошибка, та же что и вылетает при выполнении  

    RESTRequest.ClearBody;
      RESTRequest.AddBody(ABody);
      RESTRequest.Method:=TRESTRequestMethod.rmGET;
      RESTRequest.Execute; 

    Хотя указан же GET

    1.png

    2.png

  3. В 21.01.2020 в 03:03, lomanu4 сказал:

    Всем привет.

           Вообщем пытаюсь синхронизировать свою локальную базу с сервером, использую при этом Restrequest,все идет нормально но только приложение зависает на время цикла.

    В цикле идет перебор все данных в локальной базе и заносится по ссылке в базу.

    Пытался сделать в потоке но выскакивает ошибка "Argument errore", а без потока не выскакивает.

    Есть решение для улучшения скорости или хотя бы убрать зависания приложения?

    спасибо за ранее за вашу помощь.

    
    var
      aggiornarichiesta: TJSONObject;
      i,b: Integer;
      a:TStream;
    begin
    
      FDTable1.First;
      for i := 0 to FDTable1.RecordCount do
      begin
        if RESTRequest1.Response.StatusCode = 200 then
        begin
    
            try
             RESTRequest1.ClearBody;
              RESTClient1.BaseURL := 'http://localhost/loman/dati.php';
             RESTRequest1.Execute;
    
    
    
              aggiornarichiesta := TJSONObject.Create;
              aggiornarichiesta.AddPair('id', FDTable1ID.Text);
              aggiornarichiesta.AddPair('Materiale',
                FDTable1.FieldByName('Materiale').AsString);
              aggiornarichiesta.AddPair('Descripzione',
                FDTable1.FieldByName('Descripzione').AsString);
              aggiornarichiesta.AddPair('Quantita', FDTable1.FieldByName('Quantita')
                .AsString);
              aggiornarichiesta.AddPair('Treno', FDTable1.FieldByName('Treno')
                .AsString);
              aggiornarichiesta.AddPair('Discorta', FDTable1.FieldByName('Discorta')
                .AsString);
              aggiornarichiesta.AddPair('Commento', FDTable1.FieldByName('Commento')
                .AsString);
              aggiornarichiesta.AddPair('Creatoda', FDTable1.FieldByName('Creatoda')
                .AsString);
              aggiornarichiesta.AddPair('Ordinato', FDTable1.FieldByName('Ordinato')
                .AsString);
    
              RESTClient1.BaseURL := 'http://localhost/loman/Product/update.php';
              RESTRequest1.ClearBody;
              RESTRequest1.AddBody(aggiornarichiesta.ToString,
                ContentTypeFromString('application/json'));
              RESTRequest1.Execute;
              FDTable1.Next;
              RESTRequest1.ClearBody;
              RESTClient1.BaseURL := 'http://localhost/loman/dati.php';
              RESTRequest1.Execute;
            finally
              RESTRequest1.DisposeOf;
            end;
    
    
    
        end;
    
      end;

     

    TTask.Run(
        procedure
        var
          //Какие то переменные
        begin
          //тут пишешь код, который никак не изменяет свойства визуальных компонентов
          //Это может быть например запрос на сервер или работа с большим объемом данных
          //в твоем случае это(RESTRequest надо тут же и создать):
          RESTRequest.ClearBody;
          RESTClient.BaseURL := 'http://localhost/loman/dati.php';
          RESTRequest.Execute;
          TThread.Synchronize(TThread.CurrentThread,
              procedure
            var
              //переменные
            begin
                //тут пишешь код который изменяет свойства визуальных компонентов.
                //т.е. получил например от сервера JSON тут его распарсил и отдал 
                //на вывод
            end);
        end);
  4. Доброй ночи. подскажите пожалуйста, в чем может быть дело.  отправляется запрос:

      RESTRequest.ClearBody;
      RESTRequest.AddBody(ABody);
      RESTRequest.Method:=TRESTRequestMethod.rmGET;
      RESTRequest.Execute;

    в ответ прилетает ошибка HTTP/1.0 405 Method Not Allowed

    На сервере в роутах прописано

    Route::match(['get'],'/getcity', [APIGetCity::class, 'GetCity']);

    когда я дописываю в Route::match['get','post']... все работает. получается что на сервер прилетает post запрос или он его обрабатывает как post несмотря на то, что я явно указал перед отправкой - что типа rmGET...

    С REST на вы и шепотом) подскажите пожалуйста в чем может быть дело.

  5. Всем дорого времени суток. столкнулся с такой проблемой. приложение под андройд вылетает и само перезапускается!! при использовании TakePhotoFromCameraAction в момент нажатия кнопки фото. т.е. при отладке видно что оно вылетело - причем без ошибок. а когда пытаешься вернутся на форму с которой ушел в TakePhotoFromCameraAction, появляется splashscreen и приложение загружается снова. что это?))!??? я в шоке)! может кто сталкивался? 

    Пробовал менять Maxwith и MaxHeigth - не помогло.

  6. В 05.11.2020 в 09:23, OnePeople сказал:

    И добавить ncb.setsound

    Спасибо за ответ! В этом примере, как я понял, уведомление создается приложением уже со звуком. у меня же уведомление генерирует сервер. поэтому не совсем подходит этот метод. я пытаюсь установить свойство канала TJNotificationChannel.setsound - но его не существует, хотя  в таком же классе в андройд документации он есть.. 

  7. 59 минут назад, Edward Tarasov сказал:

    А в чем дело? у меня сейчас вообще проблема в сиднее - процедура TakePhotoFromCameraActionDidFinishTaking тупо не отрабатывает(даже не заходит в эту процедуру, хотя на 10.3 все работало) . т.е. я не могу получить сделанное фото. может кто сталкивался?

    Проблема решилась удалением androidManifestTemplate - clean - build

  8. В 17.08.2020 в 15:46, Barbanel сказал:

    Не соглашусь. Не обязательно третий мир, скорее как источник опытных кадров. У нас очень похожая ситуация:
    находимся в Германии, ищем Delphi разработчика, желательно с опытом fmx. Компания небольшая, поэтому гугловских зарплат не предлагаем.
    Из моего опыта, предлагаемая ЗП соответствует уровню миддл-разработчика. Важно понимать, что речь идет о начальной ЗП, которая пересматривается со временем.
    Людей просто нет. Не то чтобы им ЗП мала, их (людей) нет. Присылают резюме всякие индусы да турки-арабы-хзкто, это не тот контингенс с которыми мы готовы работать.
    В итоге плюнули, и везем людей из экс-ссср. На собеседовании тупых вопросов про люки не задавали. Выделили месяц-два для работы в удаленном режиме, чтобы посмотреть как человек справляется, какие вопросы задает, насколько вообще активен.
    После этого принимаем решение о релокации.

    PS, друг работает в Голландии, разрабатывают ПО для аэропортов.
    Его компания за пять лет привезла более тридцати русскоговорящих разработчиков.
    Имхо, это говорит о многом.

    и мою)!

  9. В 13.10.2020 в 20:03, Ronalds Rizakovs сказал:

    Работало хорошо, пока не вышел android 11. 

    Нашёл свою ошибку. Дело было не в android 11.

    А в чем дело? у меня сейчас вообще проблема в сиднее - процедура TakePhotoFromCameraActionDidFinishTaking тупо не отрабатывает(даже не заходит в эту процедуру, хотя на 10.3 все работало) . т.е. я не могу получить сделанное фото. может кто сталкивался?

  10. В 03.07.2020 в 13:45, gonzales сказал:

    Нашел причину,

    В недрах класса TPushService

    
     TPushService = class abstract
      public
        type
          TPropPair = TPair<string, string>;
          TPropArray = TArray<TPropPair>;
          // commonly used names
          TServiceNames = record
          public const
            GCM = 'gcm';  // deprecated 'Is not available anymore. Please use FCM instead';  // Google cloud messaging
            FCM = 'fcm';  // Google Firebase cloud messaging
            APS = 'aps';  // Apple
          end;

    Соответственно нужно исправить

    FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM);

    на

    FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.FCM);

     

    Все работает

    Все сделал так как вы описали. При компиляции выдает: [DCC Error] Unit3.pas(2142): E2003 Undeclared identifier: 'FCM'. Складывается такое впечатление, что эти константы определены где то еще. потому что даже если удалить всю структуру  TServiceNames = record из TPushService = class abstract, всеравно компилируется, хоть и строка FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.FCM) подчеркивается красным... что за ерунда?

  11. Доброго времени суток форумчане.

    Есть необходимость в собственном звуке для push уведомлений. сами push настраивал по статье Равиля (http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html)

    при отправке пуша на сервере звук прокидываю таким образом : $fields['notification'] = array('body' => $text, 'title' => $title,'sound' => 'au.mp3'); сам файл au.mp3 есть в deployment с remote path res\raw\

     В общем все хорошо работает, но не для андройд начиная с версии 8.

    Нашел эту статью https://coderoad.ru/52929138/Нет-пользовательского-звука-с-уведомлением-Android-Firebase в которой сказано, что необходимо указать channel id при отправке, выяснил, что дефолтный channel создаваемый по умолчанию имеет id fcm_fallback_notification_channel_label - попробовал прописать его при передаче $fields['notification'] = array('body' => $text, 'title' => $title,'sound' => 'au.mp3, 'channel_id' => 'fcm_fallback_notification_channel_label'); - не работает.

    попытался сделать свой канал с нужными настройками, чтобы в дальнейшем указать его при передаче :

     

       Channel := NotificationCenter1.CreateChannel('ChanelPush','Push Уведомления');
       Channel.Importance :=  TImportance.High;
       Channel.ShouldShowLights := true;
       Channel.LockscreenVisibility := TLockscreenVisibility.&Public;
       Channel.ShouldShowBadge := true;
    
       NotificationCenter1.CreateOrUpdateChannel(Channel);

    Канал видимо не создается, так как в настройках приложения на телефоне не отображается, а при отправке пушей отображается дефолтный канал создаваемый средой... 

    Кто нибудь сталкивался с протаскиванием своего звука для уведомлений для новых андройд? HELP PLEASE!)

  12. Ну fio же не уникальны.. так можно получить несколько значений id. Либо использовать таблицу в которой fio будет соответствовать id либо при выводе в combobox пихать id к fio в одну строку и использовать при извлечении id функцию Copy.

    Если допустить что fio уникальны : SELECT id FROM table_name WHERE fio='ivanov ovan ivanovich'; //combobox.selected.text

  13. Приветствую.

    Возникла необходимость узнать из приложения IOS дал ли пользователь разрешение на push и если нет(/*покарать его*/) вывести соответствующую информацию в настройках. нарыл на просторах инета такую штуку : https://github.com/DelphiWorlds/KastriFree/blob/master/API/DW.iOSapi.UserNotifications.pas

    закинул в uses и если это можно так назвать - написал ) :

    iospush:=TUNNotificationSettings.Create();

    case iospush.authorizationStatus of
        UNAuthorizationStatusAuthorized: CheckBox3.IsChecked:=true;
        UNAuthorizationStatusDenied:CheckBox3.IsChecked:=false;
        UNAuthorizationStatusNotDetermined: CheckBox3.IsChecked:=false;
      end;

    вот только вне зависимости от имеющегося или нет разрешения authorizationStatus всегда UNAuthorizationStatusNotDetermined

    Подскажите плиз где туплю. или другой способ узнать есть ли это разрешение. 

     

  14. 17 часов назад, Slym сказал:

    1. Патчить

     thgw_p1CPqL7vX7.png.c98bbcb16d59fc333ce58714e2363915.png

    2. Не хочется генофонд трогать
    Можно скопипастить к себе TAVAudioSession и патчить у себя...

    а потом

    
    AudioSession := TAVAudioSession.Wrap(TAVAudioSession.OCClass.sharedInstance);
    if AudioSession.recordPermission=AVAudioSessionRecordPermissionDenied then
    
    AudioSession.requestRecordPermission(TPermissionBlock.Proc);
    
    type
      TPermissionBlock=class
      public
        class procedure Proc(Granted: Boolean);
      end;
    
    class procedure TPermissionBlock.Proc(Granted: Boolean);
    begin
      if Granted then
    end;


     

    Прошу прощения. а для push подобное решение есть?)

  15. Приветствую форумчане. несколько дней бьюсь над задачей- узнать имеет ли приложение доступ к микрофону. под андройд это делается легко, а вот под IOS... для геолокации удалось собрать костыль(кровь из глаз - но работает), а вот для микрофона что то не получается.

  16. В 08.08.2020 в 20:06, Bob32 сказал:

    Добрый день!

    есть вот такой, хорошо работающий под андроидом код запроса пользовательских разрешений:

    {$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-ом налетел на такую проблему - при первом запуске пользователю задается вопрос про оба этих пермишинса (откуда он понимает, что это они - не понимаю - строки то пустые!) если пользователь разрешит их - все ок - приложение работает. если не разрешит - в этот запуск камера и локейшн сенсор не работают (что нормально), а вот при следющем запуске приложения - оно просто вылетает на старте - и никаких разрешений снова никто ни у кого не спрашивает )

    какие мысли? )

    Вы решили проблему?

  17. Привет формучане. такой вопрос. при попытке построения aab вылетает ошибка

    [PAClient Error] Error: E6408 Unable to execute '"C:\Program Files (x86)\Java\jdk1.7.0_71\bin\java.exe" -jar "e:\program files (x86)\embarcadero\studio\20.0\bin\android\bundletool-all-0.10.3.jar" build-bundle --modules="E:\commecrc\Android64\Release\Project3\base.zip" --output="E:\commecrc\\Android64\Release\Project3\bin\Project3-unsigned.aab" --config="E:\commecrc\Android64\Release\Project3\buildconfig.json"' (Error 1)

    Гугл сказал проверить это в реестре HKEY_CURRENT_USER \ Software \ Embarcadero \ BDS \ 20.0 \ PlatformSDKs \ AndroidSDK25.2.5_64bit.sdk на наличие значения в переменной JDKPath . оно присутствует и верное. кто нибудь СТАЛКИВАЛСЯ С ПРОБЛЕМОЙ?

  18. В 10.06.2018 в 17:54, Виталий Иванов сказал:

    Немогу понять в чём дело добавил в deployment библиотеку вроде все норм и она даже появилась в самой APK но любой пример с использование этой библиотеки тупо виснит при загрузке и всё больше ничего не делает, в логах пусто. Может кто сталкивался с подобным ?

    Столкнулся с той же проблемой. на Delphi 10.3.3. Приложение просто виснет на bass_init. библиотека libbass.so есть в deployment для debug и release. Remote path прописаны как: library\lib\armeabi\, library\lib\arm64-v7a\ соответственно. Ктонибудь может подсказать в чем может быть дело?((

  19. Эта проблема была решена, в uses необходимо было добавить DPF.iOS.Media.

    Теперь есть другая проблема. при отправке в потоке avail:=BASS_ChannelGetData(chanMic, nil, BASS_DATA_AVAILABLE);

    avail равно 0, что как бы намекает на то, что запись если и идет - то кудато не туда((

  20. Хорошая статья - Спасибо большое! Но у меня не получается запустить на устройстве. все 10 раз перепроверил - сделал как в статье. ошибка:

    [DCC Error] E2597 Undefined symbols for architecture arm64:
        Error: "_AudioOutputUnitStop", referenced from:      l174 in libbass.a(libbass.a-arm64-master.o);      l181 in libbass.a(libbass.a-arm64-master.o);      l183 in libbass.a(libbass.a-arm64-master.o);      l391 in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioOutputUnitStart", referenced from:      l168 in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioUnitSetProperty", referenced from:      l170 in libbass.a(libbass.a-arm64-master.o);      l181 in libbass.a(libbass.a-arm64-master.o);      _BASS_Init in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioUnitUninitialize", referenced from:      l181 in libbass.a(libbass.a-arm64-master.o);      l391 in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioSessionSetProperty", referenced from:      _BASS_Init in libbass.a(libbass.a-arm64-master.o);      l615 in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioUnitGetProperty", referenced from:      l170 in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioComponentInstanceDispose", referenced from:      l181 in libbass.a(libbass.a-arm64-master.o);      l391 in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioSessionSetActive", referenced from:      _BASS_Init in libbass.a(libbass.a-arm64-master.o);      l614 in libbass.a(libbass.a-arm64-master.o);      l616 in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioUnitAddPropertyListener", referenced from:      _BASS_Init in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioUnitInitialize", referenced from:      _BASS_Init in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioComponentInstanceNew", referenced from:      _BASS_Init in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioComponentFindNext", referenced from:      _BASS_Init in libbass.a(libbass.a-arm64-master.o);
          Error: "_AudioSessionInitialize", referenced from:      l615 in libbass.a(libbass.a-arm64-master.o);
      ld: symbol(s) not found for architecture arm64

    Гугл не помог... что я делаю не так. help pleeease)!

  21. 4 часа назад, Martifan сказал:

    Спасибо, а если каждый 2 минуты аппликация будет вызывать какой нибудь метод из моего веб сервиса?

    Без разницы. конкретно этот пример отрабатывает три минуты. также на ios есть возможность регистрировать функцию, которой IOS будет выделять время для выполнения, там тоже жесткие ограничения и когда ей выделять время - одному джобсу известно(было, теперь уже нет)... т.е. она может выполняться раз в час, сутки, месяц и т.д. На сегодняшний день как я понял возможно удерживать приложение в фоне работоспособным это - VOiP(и тот в следущей версии толи в этой уже) обещали прикрыть(Facebook в шоке работает над решением), работа с микрофоном, воспроизведение аудио.. вроде еще геолокация должна позволять приложению работать, но что то у меня не вышло. с микрофоном история такая - как только запись прервали - приложение выключается, с аудио - тоже....  именно по этому я просил у вас в лс, рабочий пример записи в буффер с микрофона а не в файл, чтобы серверу отправлять аудио без прерывания записи... сейчас работаю над этим.

  22. Сам недавно бился с этим вопросом. ответ нашел на этом форуме.

    Но после долгого гугления вопроса сложилось впечатление, что на сегодняшний день из ios можно выжать максимум три минуты работы приложения в фоне, потом приложение перестает реагировать. в моем случае было необходимо передавать координаты. Что только не перепробовал - три минуты и все. можно мухлевать: Воспроизводить аудио или записывать с микрофона - но ребята из apple при публикации к такому отнесутся не очень. вот исходники которые нарыл - пример отрабатывает в фоне три минуты

     

    BackgroundTaskManager.zip

×
×
  • Создать...