2015-05-13 28 views
10

Zaimplementowałem aplikację do czatowania wykorzystującą XMPP iOS Framework z serwerem OpenFire.XMPP iOS Framework wykrywa problem z odłączaniem Internetu z serwerem OpenFire

szczęście, aplikacja działa z powodzeniem, ale jestem stoi jeden problem odłączenia internetu w aplikacji.

Gdy użytkownik jest coraz wylogowania lub poszedł w trybie offline ręcznie następnie wysyła zwrotka jego/jej spisy. Więc jego/jej listy wiedzą, że użytkownik przeszedł w trybie offline.

Teraz kiedy internet będzie odłączyć od urządzenia użytkownika w tej aplikacji czasu nie jest w stanie przesłać do serwera obecności zwrotka z powodu Internetu rozłączenia. Tak więc jego spisy nie otrzymają informacji o tym użytkowniku offline, a użytkownik będzie pokazywany tylko w trybie online.

Pomyślałem, że coś takiego jak serwer OpenFire może być w stanie sprawdzić podłączonych użytkowników, a ilekroć jakikolwiek użytkownik zostanie rozłączony, powinien wysyłać do niego stan obecności ze statusem offline, aby mogli wiedzieć, że ten użytkownik jest w trybie offline.

Czy ktoś może mi pomóc, jeżeli istnieje jakikolwiek sposób, przez które można zaimplementować tę funkcję.

Bardzo mi pomoże rozwiązać ten problem.

Z góry dziękuję.

+0

Hi ... nie można sprawdzić połączenie internetowe na swój koniec, a jeśli tak, to możesz wysłać offline status danego użytkownika wszystkich jego/jej przyjaciele .... Mam na myśli to, że jeśli nie działa z biblioteką, możemy ręcznie sprawdzić połączenia i podjąć wymagane kroki. – iCodeAtApple

+1

@iCodeAtApple mogę sprawdzić połączenia internetowego na mój koniec, ale nie mogę wysłać do statusu innych przyjaciół, ponieważ internet jest stracone :( –

+0

masz facetów Każde rozwiązanie dla powyższe pytanie? – Parthpatel1105

Odpowiedz

4

Jest to cecha XMPP rdzeń i Openfire musi wysłać unavailable do kontaktów w Twoim imieniu. Wygląda więc jak błąd. Ale jest inny problem - użytkownicy z mobilnym Internetem mogą się zbyt często ponownie łączyć, a społeczność XMPP opracowała rozszerzenie Stream Management, które pozwala serwerowi "hibernować" sesję klienta, gdy szybko ponownie się połączy i przywróci ją bez zmian obecności. Podsumowując:

  1. Sprawdź, czy zarządzanie strumieniem jest aktywne - w tym przypadku użytkownik nadal będzie mieć stały dostęp do Internetu (zwykle 5 minut), a następnie przejdzie w tryb offline.
  2. Sprawdź, czy Openfire implementuje jakieś niestandardowe rozszerzenie w celu utrzymania sesji użytkownika.
  3. Jeśli jesteś pewien, że żadne z rozszerzeń nie jest "hibernującą" sesją użytkownika - to jest to naprawdę błąd. Spróbuj to samo z innego serwera XMPP - dobrymi kandydatami są ejabberd i prosody
+0

Zgadzam się z tym. – Mrug