我正在为iphone开发一个xmpp客户端。我能够发送和接收消息。我想在不提示用户的情况下自动接受好友请求。我将在哪个功能中收到请求。请给我任何提示。
提前致谢。
答案 0 :(得分:7)
好的,我有一个完美的答案给你!
以下是代码:
- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence {
// a buddy went offline/online
NSString *presenceType = [presence type]; // online/offline
NSString *myUsername = [[sender myJID] user];
NSString *presenceFromUser = [[presence from] user];
if (![presenceFromUser isEqualToString:myUsername]) {
if ([presenceType isEqualToString:@"available"]) {
[_chatDelegate newBuddyOnline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, kHostName]];
NSLog(@"presence user is %@",presenceFromUser);
}
else if ([presenceType isEqualToString:@"unavailable"]) {
[_chatDelegate buddyWentOffline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, kHostName]];
NSLog(@"presence user is invisible %@",presenceFromUser);
}
else if ([presenceType isEqualToString:@"subscribe"]) {
[_chatDelegate newBuddyOnline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, kHostName]];
NSLog(@"presence user wants to subscribe %@",presenceFromUser);
}
}
}
我为您提供了完整的DidReceivePresence方法代码,以便您更好地理解。
现在让我用代码解释一下。如果你注意到else if条件我正在比较我们收到的值(元素)。因此,当我将字符串作为订阅时(当用户发送好友请求时),您只需要在tableview好友列表中添加该特定用户。
您可以从“presenceFromUser”获取用户名。
如果您需要了解更多信息,请发送电子邮件至blueobaid@gmail.com,因为当您回复我的答案时我没有收到提醒,但我会回来并在此回复,以便它也可以帮助其他人!我将很快在http://Czartechnogeeks.com/iSolutions
上发布一个教程我很高兴能够在帮助我之后用stackoverflow分享对用户有价值的东西。
答案 1 :(得分:4)
U不会在单独的功能中收到请求。每当好友上线或发送请求时,都会调用didReceivePresence委托函数。如果你得到存在类型=订阅那么它是buddyrequest。希望这会对你有所帮助。
答案 2 :(得分:2)
您将收到功能 didReceivePresence 。
的订阅要接受订阅,您可以使用以下代码:
NSXMLElement *presence = [NSXMLElement elementWithName:@"presence"];
[presence addAttributeWithName:@"type" stringValue:@"subscribed"];
[presence addAttributeWithName:@"to" stringValue:[presence fromStr]];
[presence addAttributeWithName:@"from" stringValue:@"you@host"];
[[self xmppStream] sendElement:presence];
可能有帮助:)