Перейти к содержанию
  • 0
M1shQa

Отправка данных по http в фоновом режиме

Вопросы

И снова я к Вам за советом, господа. Задачка: пользователь кидает телефон в карман и в фоновом режиме программа сама проверяет каждые секунд 15 наличие новой строки в стринглисте, который цепляется с файла и пытается отправить http запрос. Как мне до этого подсказали копать надо в сторону сервисов. Что же, начал: создал сервис, прицепил к приложению, кинул на него таймер и http от indy, написал кучу кода. Как итог - сервис виден в процессах но таймер не срабатывает и ничего не происходит (запускаю приложение, что бы запустить сервис, выхожу из него и жду проверяя данные на сервере). Но происходит совсем ничего. Туда ли я вообще полез или это нужно реализовывать как то иначе? Стоит local сервис, может проблема в этом? Ниже в темах писали что таймер не работает или еще что, при компиляции ничего не ругается, хотя условий там море и т.д. Все данные которые мне нужно отправить цепляются из текстовых файлов и далее в TStringList..  Понятное дело что такой сервис будет жрать батарейку и кучу трафика, но они так и так тратятся пользователем в "ручном" режиме :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
53 минуты назад, MikeWuzHere сказал:

  Понятное дело что такой сервис будет жрать батарейку и кучу трафика, но они так и так тратятся пользователем в "ручном" режиме :(

Честно, слабо представляю, как ваше творение будет работать всегда.... каждые 15 секунд!!! Это не просто будет жрать батарейку, это как мороженное в пустыне Сахара. Отдача данных через 3G-4G - это очень энергоемкий процесс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 минуты назад, Vitaldj сказал:

Честно, слабо представляю, как ваше творение будет работать всегда.... каждые 15 секунд!!! Это не просто будет жрать батарейку, это как мороженное в пустыне Сахара. Отдача данных через 3G-4G - это очень энергоемкий процесс.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
28 минут назад, MikeWuzHere сказал:

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

Извините за прямоту)))) но вы сначала покупаете железо и все такое, а потом думаете и ставите задачу? Может нужно было наоборот? И я не совсем плнял, откуда беруться данные? Геолокация?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

полезно к прочтению

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
4 часа назад, MikeWuzHere сказал:

И снова я к Вам за советом, господа. Задачка: пользователь кидает телефон в карман и в фоновом режиме программа сама проверяет каждые секунд 15 наличие новой строки в стринглисте, который цепляется с файла и пытается отправить http запрос. Как мне до этого подсказали копать надо в сторону сервисов. Что же, начал: создал сервис, прицепил к приложению, кинул на него таймер и http от indy, написал кучу кода. Как итог - сервис виден в процессах но таймер не срабатывает и ничего не происходит (запускаю приложение, что бы запустить сервис, выхожу из него и жду проверяя данные на сервере). Но происходит совсем ничего. Туда ли я вообще полез или это нужно реализовывать как то иначе? Стоит local сервис, может проблема в этом? Ниже в темах писали что таймер не работает или еще что, при компиляции ничего не ругается, хотя условий там море и т.д. Все данные которые мне нужно отправить цепляются из текстовых файлов и далее в TStringList..  Понятное дело что такой сервис будет жрать батарейку и кучу трафика, но они так и так тратятся пользователем в "ручном" режиме :(

Пытаться сделать из смартфона сервер - УТОПИЯ!

Используйте для этого другие варианты!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
7 часов назад, Vitaldj сказал:

Извините за прямоту)))) но вы сначала покупаете железо и все такое, а потом думаете и ставите задачу? Может нужно было наоборот? И я не совсем плнял, откуда беруться данные? Геолокация?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
5 часов назад, wamaco сказал:

Пытаться сделать из смартфона сервер - УТОПИЯ!

Используйте для этого другие варианты!

какой же сервер, мне НА сервер нужно отправлять файлы, текст и фотографии тогда, когда на мобильнике появляется интернет и делать это без участия пользователя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
6 часов назад, ZuBy сказал:

полезно к прочтению

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, MikeWuzHere сказал:

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

я не работаю с сервисами, поэтому подсказать не могу.

почитайте темы на форуме, это уже не раз обсуждалось

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 часа назад, MikeWuzHere сказал:

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

Local-сервис для этого вполне подходит, главное сделать его перезапускаемым (Sticky). В разделе Сервис уже довольно много примеров, стоит их посмотреть. К сожалению, заряд батареи действительно будет быстро таять. Может не стоит так часто дергать сеть? 

PS. С помощью монитора отслеживайте, выводя лог, или с помощью дебага действительно ли ваш сервис нормально запускается и работает (с TTimer точно не работает).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
14 часов назад, MikeWuzHere сказал:

И снова я к Вам за советом, господа. Задачка: пользователь кидает телефон в карман и в фоновом режиме программа сама проверяет каждые секунд 15 наличие новой строки в стринглисте, который цепляется с файла и пытается отправить http запрос. Как мне до этого подсказали копать надо в сторону сервисов. Что же, начал: создал сервис, прицепил к приложению, кинул на него таймер и http от indy, написал кучу кода. Как итог - сервис виден в процессах но таймер не срабатывает и ничего не происходит (запускаю приложение, что бы запустить сервис, выхожу из него и жду проверяя данные на сервере). Но происходит совсем ничего. Туда ли я вообще полез или это нужно реализовывать как то иначе? Стоит local сервис, может проблема в этом? Ниже в темах писали что таймер не работает или еще что, при компиляции ничего не ругается, хотя условий там море и т.д. Все данные которые мне нужно отправить цепляются из текстовых файлов и далее в TStringList..  Понятное дело что такой сервис будет жрать батарейку и кучу трафика, но они так и так тратятся пользователем в "ручном" режиме :(

Не надо вообще таймер делать для этого. И вообще, никогда таймеры не надо делать, когда можно без них обойтись. Вам в данной задаче надо работать по событиям.

Каждый раз, когда пользователь сделал изменение в стринглисте, вы проверяете, прошло ли с момента последней отправки 15 секунд, а можно и без проверки. Далее вызов startService, с переданными в метод текстом. Сервис стартует с командой отправить переданный текст, отправляет его.

Для этой задачи я бы использовал IntentService, а не LocalService — соответственно не startService, а bindService.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
4 минуты назад, Pax Beach сказал:

Не надо вообще таймер делать для этого. И вообще, никогда таймеры не надо делать, когда можно без них обойтись. Вам в данной задаче надо работать по событиям.

Каждый раз, когда пользователь сделал изменение в стринглисте, вы проверяете, прошло ли с момента последней отправки 15 секунд, а можно и без проверки. Далее вызов startService, с переданными в метод текстом. Сервис стартует с командой отправить переданный текст, отправляет его.

Для этой задачи я бы использовал IntentService, а не LocalService — соответственно не startService, а bindService.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От ComAlex
      Господа Delphi-программисты под Android (FireMonkey),
      Нужна ваша помощь или совет в направления решения в несложной, достаточно типичной и прозрачной задаче:
      Я хочу выполнять некоторые вычисления (или выдавать Toastы) через каждые 30 сек. в Android-приложении.
      Что-то типа сервиса (службы): Приложение запускает задание и может закрываться, 
      но периодические вычисления продолжаются (результат сохраняется, допустим, в ini - не важно пока), т.е. служба работает.
      Я не знаю, как это решить:
      1. Организовал как сервис.
          Сервисы убиваются androidом ... И это политика androidов: экономить батарию и т.д.
      2. Сделал через AlarmManager.
          Тоже это не работает на MI 9T (Android 10: API 29). На старых (Android 4...: API 19) всё работает.
      3. Хотел использовать job scheduler: добавлять задания и удалять исполненные. Но не знаю как. ничего не нагуглил под Firemonkey. Может кто знает?
      Какие ещё варианты и вообще, это решается на Firemonkey Delphi XE 10.3.3?
      На поиск решения мною потрачено много время - сдвинуться не могу.
      Если Delphi это не умеет, так и скажите - перепрыгну на другую платформу.
          Может Delphi об этом думает, чтоб это скоро реализовать? В интернете тишина.
      Если Delphi это умеет, просьба дать идею или совет или пример ...
    • От Евгений Корепов
      Я написал класс для демонизации приложения в linux. Класс форкает процесс, обрабатывает поступающие сигналы и передает их в основной поток через потокобезопасную очередь.
      Исходники https://github.com/EvgeniyKorepov/LinuxDaemon
      Для использования просто подключите модуль UnitDaemon в свое консольное приложение:
      program DaemonTest; {$APPTYPE CONSOLE} uses System.SysUtils, System.IOUtils, System.SyncObjs, Posix.Stdlib, Posix.SysStat, Posix.SysTypes, Posix.Unistd, Posix.Signal, Posix.Fcntl, Posix.Syslog in 'Posix.Syslog.pas', UnitDaemon in 'UnitDaemon.pas'; var AEventType : TEventType; begin syslog(LOG_NOTICE, 'main START'); while True do begin syslog(LOG_NOTICE, 'main LOOP'); if UnitDaemon.QueueEvent.PopItem(AEventType) = System.SyncObjs.TWaitResult.wrSignaled then begin syslog(LOG_NOTICE, 'main UnitDaemon.QueueEvent.PopItem'); case AEventType of TEventType.StopProcess : begin syslog(LOG_NOTICE, 'main Event StopProcess'); ExitCode := EXIT_SUCCESS; exit; end; TEventType.Start : begin syslog(LOG_NOTICE, 'main Event START'); end; TEventType.Reload : begin // Reload config syslog(LOG_NOTICE, 'main Event RELOAD'); end; TEventType.Stop : begin syslog(LOG_NOTICE, 'main Event STOP'); ExitCode := EXIT_SUCCESS; exit; end; end; end; Sleep(50); end; end. Так же поддерживается systemd - для этого положите  DaemonTest.service в /etc/systemd/system/ и используйте :
      systemctl start DaemonTest.service systemctl reload DaemonTest.service systemctl stop DaemonTest.service  
    • От Евгений Корепов
      Вот просто идеальная статья по запуску демона под Linux http://blog.paolorossi.net/2017/09/04/building-a-real-linux-daemon-with-delphi-part-2/ 
      Помимо объяснения механизма fork с отличными примерами,  есть куча дополнительной наиполезнейшей инфы.
    • От Игорь Маринин
      поделитесь пожалуйста пустым проектом, готовым к публикации для TV устройств.
      что-то никак не получается опубликовать, сейчас отклонили с такими ошибками:
      APK:8
      No Now Playing notification [card]"
      Your App does not contain a “Now Playing” notification [card] for when the user has selected the HOME button within the app. Please refer to our Displaying a Now Playing Card documentation for more details.
      APK:8
      Play/Pause key event is not respected during playback
      Your media apps that play video or music content must respect the play/pause key during playback. Please refer to our Media Play/Pause documentation and Update the Playback State documentation for details.
      Missing DPad functionality
      Your app requires user interaction for menus or app navigation. Please make sure that all menus and app navigation are fully functional using a DPad. Please refer to our DPAD Control and Hardware Declaration documentation.
      ну и баннер не прилепил
      No full-size app banner
      Your app does not contain a full-size app banner or is it not visible in the launcher. We are targeting 1080P, which we consider xhdpi. Apps should include the banner in the xhdpi (320 dpi) drawables folder with a size of (320px × 180px). Please refer to our Home Screen Banner and UI Patterns documentation.
      The title should help users identify apps in the launcher. Please refer to our Visual Design and User Interaction documentation for more information.
      был бы очень благодарен за рабочий пустой костяк с манифестом.
       
    • От krapotkin
      В процессе разработки столкнулся с очень странной ситуацией, корни которой до сих пор неясны, но решение нашлось.
      Итак. Делфи 10.3.3. Чистое приложение - пустая форма и кнопка. Отлично работает на разных устройствах кроме Samsung Galaxy Tab A (2016). Android 5.1.1
      Программа падает, не успев даже загрузиться. Любая. При этом она же, скомпилированная на другом компе, запускается нормально. И даже после изменения SDK/NDK на нем, ничего не падает.
      LogCat дает крайне странную картину
      java.lang.IllegalArgumentException: Unable to load native library: /data/app-lib/com.embarcadero.Project1-1/libProject1.so
      Начинаем экспериментировать с SDK, NDK и т.д. Поставил также хотфиксы для 10.3.3.
      Сразу скажу, SDK/NDK ставились отдельно через Android studio, не скачивались вместе с Delphi. Не торопитесь бросать чтение на этом месте!)) На другом компе, где все работает, все ставилось точно так же.
      Короче, очень много комбинаций версий SDK/NDK проверено.
      Результат такой. При постепенном понижении версии NDK все взлетело при NDK v22.

      При этом версия SDK видимо такого большого влияния не имеет, потому что этот вариант нормально работает

      Повторюсь. На других устройствах все работало и на более новых Ndk. Xiaomi Mi Pad4 , Samsung Galaxy Tab A (2019), Xiaomi Redmi 5 и 5Plus
       
      Спасибо за участие и помощь в разборе завалов @Andrey Efimov
       
    • От krapotkin
      У меня в работе два приложения, и оба они не предназначены для Play market, так как имеют ограниченный круг использования, по сути, чисто внутрикорпоративные. Так что нежелательно и выкладывание их и на альтернативные магазины приложений. 
      Автоматически возникает вопрос обновления. Если в  первый раз мы можем установить приложение сами при помощи админов, то обновлять их не так просто. А контингент пользователей не справится с "скачайте APK по ссылке, найдите, куда его скачал браузер, и запустите вручную именно последний скачанный, а не какой попало"...
      Простейший способ - дать приложению скачать свежую копию с сайта и натравить на полученный файл системный инсталлер.
      Вот только свежие Andoird делать это напрямик запрещают. Нужен filepropvider. Целый день шуровал по мануалам и YT,
      Вот то что получилось  в результате.
      Если у вас 10.3.3 как у меня, уже можно не вносить <provider>...</provider> в манифест и свой файл file_paths.xml (или как вам его советуют назвать в интернетах) в деплой.
      Теперь все это делается хоть несколько странно и однобоко, но автоматически, путем установки галочки Secure File Sharing

      после этого в манифесте автоматически пропишется один из вариантов размещения файлов, которые вы можете найти в интернете. Используется алиас external-path
      файл, показанный на рисунке, создается автоматически самой делфи.

      теперь остается отгадать, какой путь реально подставится вместо "."
      Как показала практика, все пути выглядят не так, как кажется, если исходить из простого здравого смысла. Целый день использования GetHomeDir и других полезных методов TPath завел меня совсем в тупик.
      Оказалось все проще (?)
      st:TMemoryStream; OutputDir: JFile; ApkFile: JFile; ApkUri: Jnet_Uri; path, filename: string; ... OutputDir := TAndroidHelper.Context.getExternalCacheDir(); path := JStringToString(OutputDir.getAbsolutePath); filename := path+'/ASDroid2.apk'; ApkFile := TJfile.JavaClass.init( StringToJstring(filename)); FApkUri := TAndroidHelper.JFileToJURI(ApkFile); st.Position := 0; st.SaveToFile(filename); обратите внимание, в provider_paths мы задаем external-paths, а в коде ищем ExternalCacheDir.!!!  (For.Unbelievably.Creative.Knowers!)
      Потом все просто. FApkUri передаем в интент и запускаем 
      итоговый код примерно таков. (скачивание в потоке с использованием небольшого собственного API, но там ничего важного, можно не обращать внимания)
      procedure TasdSettingsFrame.bDownloadClick(Sender: TObject); begin {$IFDEF ANDROID} bDownload.Enabled := False; DownloadAndRun(); {$ENDIF} end; {$IFDEF ANDROID} procedure TasdSettingsFrame.DownloadAndRun(); begin ttask.Run(procedure var aapi:TasdAPI; st:TMemoryStream; OutputDir: JFile; ApkFile: JFile; ApkUri: Jnet_Uri; path, filename: string; begin st := TMemoryStream.Create; aapi := TasdAPI.Clone(_API); try aapi.OnReceiveData := OnReceiveData; aapi.getApk(st); if aapi.Err.Code=0 then begin OutputDir := TAndroidHelper.Context.getExternalCacheDir(); path := JStringToString(OutputDir.getAbsolutePath); filename := path+'/ASDroid2.apk'; ApkFile := TJfile.JavaClass.init( StringToJstring(filename)); FApkUri := TAndroidHelper.JFileToJURI(ApkFile); st.Position := 0; st.SaveToFile(filename); TThread.Synchronize(nil,procedure begin bDownload.Enabled := true; StartActivity(FApkUri); end); end; finally st.Free; aapi.Free; end; end); end; procedure StartActivity(ApkUri: Jnet_Uri); var Intent: JIntent; begin Intent := TJIntent.Create(); Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK or TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP or TJIntent.JavaClass.FLAG_GRANT_WRITE_URI_PERMISSION or TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); Intent.setDataAndType(apkuri, StringToJString('application/vnd.android.package-archive')); TAndroidHelper.Activity.startActivity(Intent); end; procedure TasdSettingsFrame.OnReceiveData(const Sender: TObject; AContentLength: Int64; AReadCount: Int64; var Abort: Boolean); begin tthread.Synchronize(nil, procedure begin pb1.Max := AContentLength; pb1.Value := AReadCount; end); end; {$ENDIF} Вопросы остались конечно, почему так странно с каталогами, но выяснять пока нет желания. Работает - не трожь.
      Всем удачи.
      UPD.
      Для того, чтобы системный инсталлер запускался, нужно не забыть отметить еще одну галочку

       
       
       
       
       
    • От Дмитрий Потапов
      Приветствую. На просторах интернета нашел BASS-библиотеку для Android и соответственно обертку для нее под Delphi.

      Вроде бы все работает нормально, но вот при настройке библиотеки при помощи методов
      BASS_GetConfigPtr, BASS_SetConfigPtr для работы со строковыми параметрами возникает проблема.
      На Windows с этим я легко работал, там достаточно использовать такую конструкцию

       
      PAnsiChar(BASS_GetConfigPtr(configId)) и получаем значение. BASS_SetConfigPtr(configId, PAnsiChar(value)) и задаем значение. Но вот под Android такой способ не проходит, как минимум по одной причине - он не понимает, что такое PAnsiChar. На docwiki.emarcadero.com, есть вот такая статейка. В которой написано, что PAnsiChar нужно заменить одним из трех: System.String, System.MarshalledString или System.SysUtils.TStringBuiler
      Только вот, если использовать MarshalledString, то при попытке получить значение приложение просто намертво зависает и все.
      Потом я подумал, так как библиотека написана на Java (вероятно), то может стоит попробовать использовать JNI в работе с ней, так как в Java файле, который прилагался вместе с библиотекой. Там я нашел объявления этих функций и заметил, что тип возвращаемого значения Object (ну, не зная Java я просто предположил, что это тоже просто ссылка на значение, например как PAnsiChar в Delphi на Windows).

      Но, при попытке как-либо использовать это натыкаюсь на проблемы в виде ошибки компиляции, либо очередном зависании приложения.
      Так как возвращается Object, то решил попробовать вариант с JObject и JString, но ни один вариант не хочет работать, опять ошибки на стадии компиляции, либо зависание приложение. Может быть, я что-то не так делаю.

      В общем, буду признателен за помощь!
    • От Yarpda
      Доброго времени!
      Есть идея сделать возможность резервирования данных приложения на Google drive под текущим аккаунтом пользователя. Ничего подобного я на форуме не нашел, может быть кто-то уже пытался решать подобную задачу? Интересует работа с Gdrive  в первую очередь.
    • От Losev Andrei
      Приветствую!
      Кто-нибудь пробовал сабж? Есть у меня рабочий проект под Android, который нужно перетащить под iOS. Сразу скажу, что раньше с Apple дело не имел, так что на первый взгляд показалось несколько запутанно, но спустя несколько дней уверен, что практически все сделано верно. А вот результат — ноль. Так что нужна помощь.
      Итак, что есть из ПО/железа:
      Delphi 10.3.3 на Windows 7 Pro; macOS 10.15.1 на VMware workstation Player 15.5.1; Xcode 11.2.1 (SDK iPhoneOS 13.2) / 10.3 (SDK iPhoneOS 12.4); PAServer 20.0 (тот который не ругается на истекший срок сертификата); iPhone 6s с iOS 12.4.1; Что сделано на developer.apple.com:
      Выпущен сертификат iOS Development, установлен в macOS; Зарегистрирован App ID вида ru.domain.* для iOS; iPhone зарегистрирован как device (он доступен в XCode); Создан provisioning profile, тип — iOS development, установлен в Xcode и на телефон; Что имеем в результате: в Xcode 10.3 (выбран командой xcode-select) могу создать тестовый проект, с тем же именем, что в Delphi, и запустить на телефоне, из чего следует, что подтянутый profile и сертификат в порядке;
      В Delphi:
      Build Configurations – Release (Debug тоже пробовал); Target platform – iOS Device 64-bit – iPhoneOS 12.4 – MacOs 10.15 profile; Target — мой iPhone 6s; В Delphi проект успешно собирается, но не деплоится, получаю ошибку: «No provisioning profile found for the selected build configuration». Дополнительно вылезает окно справки «Troubleshooting: Cannot Connect to the MAC», похоже не имеющее отношение к делу.
      Delphi в Options-Deploymet-Provisioning действительно не находит нужный профайл и ничего кроме <Use Environment Option (Auto) > не доступно. В Options-Version Info CFBundleIdentifier выставлен такой же, как в Xcode при успешной сборке проекта (то есть «ru.domain.имя проекта»).
      На стороне Мака в терминале имеем выполнение Paserver-ом набора команд (Paserver запускаю посредством PaServerManager):
      > command_line: "/usr/bin/xcrun" simctl list devices
      > command_line: "/Applications/PAServer-20.0.app/Contents/MacOS/iosinstall" -q -v -t 5
      > command_line: "/Applications/PAServer-20.0.app/Contents/MacOS/iosinstall" -q -v -t 5
      > command_line: "/usr/bin/security" find-identity -v
      > command_line: "/usr/bin/security" find-certificate -p -a -c "iPhone Developer: Andrei Losev (GJ...)"
      > command_line: "/usr/bin/security" cms -D -i "/Users/macuser/Library/MobileDevice/Provisioning Profiles/590086d7-76d7-4f2b-951f-a2dc329823a6.mobileprovision"
      То есть Paserver пытается «подцепить» правильный сертификат и нужный provisioning profile, но по какой-то причине эта попытка не приводит к ожидаемому результату. На самом телефоне (Xcode-Window-Devices-iPhone-View Device Logs) лог не создается. Результат с Xcode 11.2.1 аналогичный.
      Что не так? У меня идеи закончились.
    • От Ali Ezzeddine
      65/5000       Уважаемые,
      Есть ли способ вызвать сервис Java из приложения Delphi FMX?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

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