XMPP Last Seen всегда возвращает «0» секунд, даже если пользователь давно не в сети

Я использую платформу XMPP RobbieHanson. В настоящее время я включил автоматическую подписку, используя следующий код в функции didReceivePresence.

    if([[presence type] isEqualToString:@"subscribe"])
    {
        NSLog(@"presence user wants to subscribe %@",[presence fromStr]);

        [[self xmppRoster] acceptPresenceSubscriptionRequestFrom:[presence from] andAddToRoster:YES];
    }
    else if([[presence type] isEqualToString:@"unsubscribe"])
    {
        [xmppRoster rejectPresenceSubscriptionRequestFrom:[presence from]];
        [xmppRoster revokePresencePermissionFromUser:[presence from]];
    }

Я все еще получаю последнее значение «0» секунд или 403, запрещенных для некоторых пользователей. Но в какой-то момент я понимаю, что они ушли в офлайн или онлайн, enter code here это означает, что я и они приняли подписку на присутствие.

    if([[presence type] isEqualToString:@"subscribe"])
    {
        NSLog(@"presence user wants to subscribe %@",[presence fromStr]);

        [[self xmppRoster] acceptPresenceSubscriptionRequestFrom:[presence from] andAddToRoster:YES];
    }
    else if([[presence type] isEqualToString:@"unsubscribe"])
    {
        [xmppRoster rejectPresenceSubscriptionRequestFrom:[presence from]];
        [xmppRoster revokePresencePermissionFromUser:[presence from]];
    }

person Vicky Dhas    schedule 27.10.2015    source источник


Ответы (1)


Если TCP-соединение не закрыто, и хотя вы объявили об отключении от пользователя, последнее увиденное всегда упоминается и возвращается как ZERO.

вам нужно отключить TCP-сокет, явным образом вызвав отключение «xmppstream» в фреймворке.

Также обратите внимание, что приложение, которое работает в фоновом режиме и переподключается из-за включения модуля XMPPReconnect, будет отображать последний раз, когда сервер в последний раз разорвал соединение. Но если пользователь переподключится в фоновом режиме, он будет показан как онлайн.

Для 403 Запрещено присутствие должно быть подписано на пользователя, если по какой-либо причине он покидает систему или вы удаляете и повторно добавляете пользователя на сервер чата, тогда человек должен снова отправить и принять запрос на подписку, иначе ошибка 403 будет брошен.

Я остановил фоновый режим, включенный для моего приложения Apple, так что теперь это работает нормально для меня.

Любые дополнительные предложения приветствуются.

person Vicky Dhas    schedule 02.02.2016