iOS XMPP Framework, как обрабатывать неправильные учетные данные?

Все коды, которые я использую, взяты из https://github.com/robbiehanson/XMPPFramework. Внутри примера кода.

В моем приложении для обмена сообщениями iOS7 я вызываю функцию «подключиться» внутри XMPP Framework после того, как пользователь ввел свои учетные данные для входа и нажал кнопку «Войти». Функция подключения работает нормально, если они ввели правильные учетные данные в первый раз, но не будет работать, если пользователь ввел неправильные учетные данные. Потому что эта самая первая строка внутри соединения просто вернет TRUE:

 if (![_xmppStream isDisconnected]) {
        return YES;
    }

Это означает, что любые дальнейшие нажатия на кнопку входа ничего не сделают.

Должен ли я вручную вызывать authenticationWithPassword? Является ли это правильной практикой, предполагая, что соединение между клиентом и сервером установлено?

Спасибо.


person Alex Su    schedule 14.04.2014    source источник


Ответы (1)


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

[_xmppStream connectWithTimeout:10 error:&error];

Как только поток будет подключен к серверу, будет вызван метод делегата:

- (void)xmppStreamDidConnect:(XMPPStream *)sender;

Внутри этого метода вы можете вызвать authenticateWithPassword. Если поток был ранее подключен (будет частью else, если вы опубликовали), вы можете просто вызвать authenticateWithPassword.

Если аутентификация не удалась, вызывается следующий метод делегата:

- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error;

Там вы можете решить показать сообщение пользователю и начать сначала. Если аутентификация прошла успешно, вызывается следующий метод:

- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender;
person Matías R    schedule 14.04.2014