Помимо ответа выше, есть также элемент <show>
, который следует использовать вместе с элементом <status>
. Используя оба элемента, вы можете настроить присутствие пользователя для каждого состояния доступности.
По умолчанию: доступно / автономно
При использовании <show>
: доступно / занято / нет / расширенно / нет в сети
Используя <show>
с <status>
: «Свободно общаться» / «Трудно на работе» / «На собрании» / «Вне обеда».
Если вы используете Openfire с этим методом: в столбце «Сессии пользователя»> «Присутствие» вы увидите:
Различные цветные значки для каждого пользователя (например, зеленый для доступен , красный для занят и т. Д.)
Описательный текст рядом с иконками (например, " На собрании ")
Присутствие дочерних элементов
Существует 3 элемента, которые могут изменять типы присутствия в XMPP.
<show/>
<status/>
<priority/>
( мы исключим это для обсуждения )
Показать
<show>
указывает статус доступности пользователя.
Значения элемента должны быть указаны согласно приведенному ниже списку.
"chat" -- user is actively interested in chatting.
"dnd" -- user is busy (dnd a.k.a 'Do Not Disturb').
"away" -- user is temporarily away.
"xa" -- user is away for an extended period (xa a.k.a. 'eXtended Away').
Если этот элемент не предоставлен, предполагается, что пользователь находится только в сети и доступен.
Статус
<status>
описывает статус доступности пользователя. Обычно используется вместе с элементом <show>
для подробного описания состояния доступности.
Значения элемента могут иметь любой текст описания. Например:
"Available to chat" -- can be used for "chat"
"Busy at work" -- can be used for "dnd"
"In a meeting" -- can be used for "away"
"On a vacation" -- can be used for "xa"
Использование в Objective-C
Вот как вы должны применять вышеуказанную концепцию в коде.
// Initialize variables
XMPPPresence *presence = [XMPPPresence presence];
NSXMLElement *show = [NSXMLElement elementWithName:@"show"];
NSXMLElement *status = [NSXMLElement elementWithName:@"status"];
// If user is available
[show setStringValue:@"chat"];
[status setStringValue:@"Available to chat"];
// If user is busy
[show setStringValue:@"dnd"];
[status setStringValue:@"Busy at work"];
// If user is away
[show setStringValue:@"away"];
[status setStringValue:@"In a meeting"];
// If user is away for a long period of time
[show setStringValue:@"xa"];
[status setStringValue:@"On a vacation"];
// Add the XML child elements to XMPPPresence
[presence addChild:show];
[presence addChild:status];
// Update new presence to server
[[[self appDelegate] xmppStream] sendElement:presence];
Итак, присутствие вашего настроенного пользователя теперь будет точно отражаться на вашем сервере.
См. Также: Расширяемый протокол обмена сообщениями и присутствия (XMPP): мгновенный обмен сообщениями и присутствие