2016-03-11 4 views
2

Мой чат приложение имеет следующий подход:Как узнать, не работает ли пользователь приложения?

  • Когда пользователь входит в систему на App, его статус изменится на Online. «Статус = 1»
  • Когда пользователь выходит из приложения, его статус переходит в состояние «Последний доступ». «Status = 0»

Идея заключается в том, что при входе пользователь отсоединяется от Интернета, его статус остается 1. Кроме того, если пользователь удаляет приложение его статус остается 1.

Есть ли код или способ обнаружения когда пользователь был последним онлайн после удаления/удаления приложения? Многие пользователи, которые удалили приложение, по-прежнему имеют статус Online.

ответ

0

В основном вы должны отслеживать, когда они последний раз обращались к вашему серверу. Если последний доступ был больше, чем X минут назад (X - это то, что вы решили), то вы помещаете их в автономном режиме.

+0

Есть ли способ, чтобы показать пользователям Интернет, если приложение работает в фоновом режиме? –

+0

Да, будет. Если они обращаются к серверу, последнее время доступа получает обновления. Это будет держать их в сети. Если их последнее время доступа слишком старое, вы показываете их как офлайн. Что касается активного использования приложения и фона, вы можете различать запрошенный пользователем запрос и автоматический запрос в своем сервисе api, что даст вам достаточно информации, чтобы рассказать. –

+0

Так что обнаружите, что пользователь в сети и приложение открыто в фоновом режиме, я отправляю автоматический запрос каждые несколько минут? Любой пример проверки? –

2

Внутри вашей деятельности, onStart() и onResume(), вы можете отправить сообщение онлайна присутствия на сервер, как:

  • (средства онлайн)

  • (средство форума) соответственно

Но проблема lem is Что произойдет, если приложение появится на переднем плане или если интернет остановится или пользователь удалит приложение?

Ваш сервер по-прежнему будет иметь последнее присутствие только в режиме онлайн. Один из способов его решения - использовать MQTT.

В Activity, onStart() и onResume() отправьте сообщение о присутствии онлайн брокеру как 1, 0 соответственно. Несмотря на то, что делает соединение MQTT, установите последнюю волю сообщение:

MqttConnectOptions options = new MqttConnectOptions(); 
       options.setConnectionTimeout(60); 
       options.setWill(STATUS, ("PASS_OFFLINE_STATUS_OF_USER").getBytes(), 0, true); 
       client.setCallback(ApplozicMqttService.this); 

       client.connect(options); 

Источник:https://github.com/AppLozic/Applozic-Android-SDK/blob/b7337f8d43c9e4df8927c77b34903c7762670cbf/mobicomkit/src/main/java/com/applozic/mobicomkit/api/ApplozicMqttService.java

Последнее сообщение будет используется в MQTT для уведомления других клиентов о неизящно отключенной клиента.

Подробнее здесь:

http://www.hivemq.com/blog/mqtt-essentials-part-9-last-will-and-testament