Push-уведомления Android без использования Firebase Cloud Messaging или любого другого подобного сервиса - PullRequest
0 голосов
/ 03 сентября 2018

Я разрабатываю приложение для Android-чата в учебных целях, использующее архитектуру сервер-клиент. Я написал серверную часть на Java (потому что я пытаюсь учиться), а клиентская часть - приложение для Android. Я использую TCP-сокеты для связи.

Все прекрасно работает, когда два клиента имеют свои открытые приложения и подключены, но я бы хотел, чтобы клиент A все еще мог отправлять сообщение клиенту B , когда клиент B не имеет открытого приложения.

Проведя некоторые исследования, я понял, что мне нужно использовать уведомления Android push-up , которые позволят моему серверу взаимодействовать с клиентом (приложение Android), даже если приложение не открыто или не запущено , инициируя намерение на стороне клиента . Я провел еще какое-то исследование, и каждый учебник, который я нашел, использует стороннюю службу в качестве посредника для достижения этой цели, такую ​​как Firebase Cloud Messaging, которая побеждает мою цель попытки учиться, делая что-то самостоятельно.

Поскольку я делаю это для целей обучения Я не хочу использовать какие-либо из этих сервисов, таких как Firebase Cloud Messaging , я бы хотел сам инициировать намерение с сервера, который я написал в Java без используя посредника.

Основной целью здесь является отправка сообщений с моего сервера в приложение для Android, когда приложение закрыто, без использования какого-либо стороннего программного обеспечения, такого как Firebase Cloud Messaging.

Я не уверен, как этого добиться, и я был бы признателен, если бы кто-нибудь мог указать мне правильное направление. Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

В дополнение к sahand-zehtabchi я хочу сказать, что такой сервис должен лучше всего использовать свой собственный процесс, используя android:process в манифесте, чтобы меня не убили, когда основное приложение было завершено, а также должен быть реализован запуск снова после перезагрузки с разрешения <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> и построения приемника:

<receiver android:name="de.example.BootBroadcastReceiver">  
  <intent-filter>  
    <action android:name="android.intent.action.BOOT_COMPLETED" />  
  </intent-filter>  
</receiver>

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

0 голосов
/ 03 сентября 2018

Я думаю, что когда приложение находится в фоновом режиме, вы можете запустить службу и открыть сокет, а затем начать прослушивать новые сообщения, а при получении новых сообщений вы можете обрабатывать показ уведомления с уведомлением Android SDK.

...