Сам недавно бился с этим вопросом. ответ нашел на этом форуме.
Но после долгого гугления вопроса сложилось впечатление, что на сегодняшний день из ios можно выжать максимум три минуты работы приложения в фоне, потом приложение перестает реагировать. в моем случае было необходимо передавать координаты. Что только не перепробовал - три минуты и все. можно мухлевать: Воспроизводить аудио или записывать с микрофона - но ребята из apple при публикации к такому отнесутся не очень. вот исходники которые нарыл - пример отрабатывает в фоне три минуты
BackgroundTaskManager.zip
А в инде все готово...
procedure TForm1.FormCreate(Sender: TObject);
begin
IdUDPServer1.ReuseSocket:=TIdReuseSocket.rsTrue;
IdUDPServer1.DefaultPort:=9898;
IdUDPServer1.Active:=true;
end;
procedure TForm1.IdUDPServer1AfterBind(Sender: TObject);
begin
IdUDPServer1.Bindings[0].AddMulticastMembership('224.0.0.50');
end;
вполне можно без компонентов пользоваться просто WinApi
portNum='\\.\COM28';
CommHandle:= CreateFile(portNum,GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0);
ссылка