For changing my logged status I used the following code:
XMPPPresence *presence = [XMPPPresence presenceWithType:@"away"];
[[self xmppStream] sendElement:presence];
But I am not getting the reference of [self xmppStream]
. So I changed to the following code:
XMPPPresence *presence = [XMPPPresence presence];
NSXMLElement *status = [NSXMLElement elementWithName:@"status"];
[status setStringValue:@"away"];
[presence addChild:status];
NSError *error = nil;
xmppStream = [[XMPPStream alloc] init];
[xmppStream disconnect];
NSString *myJID = [NSString stringWithFormat:@"%@", appDelegate.jid];
XMPPJID *JID;
JID = [XMPPJID jidWithString:myJID];
NSLog(@"%@",JID);
[xmppStream setMyJID:JID];
xmppStream.hostName=@"talk.google.com";
[xmppStream connect:&error];
[xmppStream sendElement:presence];
Still not getting the changed status. Please share your ideas. Thanks in advance.
You can change your status immediately after you're logged in via goOnline
method as it is called after xmppStreamDidAuthenticate
.
- (void)goOnline
{
// Initialize XMPPPresence variable
XMPPPresence *presence = [XMPPPresence presence];
// Initialize XML element <show/> for specifying your status
NSXMLElement *show = [NSXMLElement elementWithName:@"show"];
// Initialize XML element <status/> for describing your status
NSXMLElement *status = [NSXMLElement elementWithName:@"status"];
// If you want your user status to be shown as "Available"
[show setStringValue:@"chat"];
[status setStringValue:@"Available"];
// If you want your user status to be shown as "Busy"
[show setStringValue:@"dnd"];
[status setStringValue:@"Busy"];
// If you want your user status to be shown as "Away"
[show setStringValue:@"away"];
[status setStringValue:@"Away"];
// If you want your user status to be shown as "Off-day"
[show setStringValue:@"xa"];
[status setStringValue:@"Off-day"];
// Add the XML elements to XMPPPresence
[presence addChild:show];
[presence addChild:status];
// Update new presence to server
[xmppStream sendElement:presence];
}
For more information and an explanation to my code above, visit Change XMPPPresence to Away/Busy/Invisible.