Отключение iOS XMPP на фоне не сообщается - PullRequest
0 голосов
/ 14 ноября 2011

Когда приложение находится в фоновом режиме и xmpp отключается, потому что интернет отключается, и если интернет восстанавливается, когда я открываю приложение, вызов разъединения не выполняется, поэтому приложение не пытается восстановить соединение.

Если я проверяю, подключен ли xmppstream, он показывает как Да. Как я могу проверить, живо ли соединение, когда возвращаюсь в приложение?

В настоящее время я пытаюсь отключиться и подключаться каждый раз, когда приложение активируется. Но идеальным было бы обнаружение разъединения ...

Спасибо

Ответы [ 2 ]

3 голосов
/ 14 июня 2012

Если вы используете XMPPFramework (https://github.com/robbiehanson/XMPPFramework),, тогда взгляните на XMPPReconnect, который избавит вас от хлопот повторного подключения.

После создания потока используйте следующее.

xmppReconnect = [[XMPPReconnect alloc] init];
[xmppReconnect activate:xmppStream];
[xmppReconnect addDelegate:self delegateQueue:dispatch_get_main_queue()];
3 голосов
/ 16 ноября 2011

Если вы можете определить, когда приложение просыпается, отправьте ping . Если вы не получили ответа, переподключитесь. Если используемая вами библиотека XMPP имеет поддержку Stream Management , особенно поддержку возобновления потока, вы можете использовать ее для захвата потока.

Лучшим решением было бы иметь отдельного демона, который управляет соединением и остается живым в фоновом режиме, если это даже разрешено на iOS. Также, этот XEP может представлять интерес.

...