Я вижу 2 варианта:
1) держать в фоне сервис, который общается с сервером постоянно.
2) реагировать на push уведомления, которые рассылает сервер.
Но и в том и в том случае, все метрики, по которым будут определяться, кому отправить сообщения, должны быть изначально определены. Например, в случае "нахождения в определенных координатах", отправлять постоянно серверу координаты устройства, или при получении запроса от сервера, проверить координаты, и в случае подходящих - вывести оповещение.