Стоит задача: нужно с сервера передавать на приложение (запущено в телефоне) команду, приложение ее должно сделать (допустим, отправить СМС) и передать серверу ответ. Скорость должна быть высокой, поэтому всякие штуки типа firebase - лишнее, да и телефон в одной локалке с сервером.
Я вижу 2 пути:
- Приложение как клиент: запускается приложение - делается коннект по WebSocket к серверу, по которому сервер передает комманды.
- Приложение как сервер: приложение принимает rest запрос и отдает ответ.
На ваш взгляд и опыт, какой вариант предпочтительней? И общий вопрос для обоих вариантов - как обеспечить однозначно постоянную работу приложения на телефоне?
возьмите только рутованый телефон или хотя бы с андроидом 7.
А там делайте как сумеете. все равно в гугл плей работу с смс не пропустят.
В андроид 9 и выше закрутили гайки не только с смсками, но и сильно ограничили работу в фоне.
Если телефон как сервер, то входящий порт должен быть больше 1024.
В общем то из местной локалки можно спокойно обращаться к телефону по ip.
Пишешь приложение в которое включен веб-сервер (заюзали https://ktor.io/)
Пихаешь его в background service
И спокойно обращаешся к нему
Проблем никаких нет.