Мой подход заключается в использовании FireBase. Использовать нужно сервер и базу данных. Вы инициализируете firebase в своем приложении. Когда пользователь открывает ваше приложение, вы получаете токен из firebase и отправляете его на свой сервер, а на своем сервере вы сохраняете токен для каждого пользователя. И затем, когда пользователь хочет отправить сообщение другому пользователю, он вызывает API с вашего сервера, чтобы отправить уведомление указанному c пользователю. И на вашем сервере у вас есть токен firebase для каждого пользователя, и с его помощью вы можете отправить этому пользователю уведомление pu sh с apis, подготовленным firebase.