如何使用XMPP框架发送消息

9

我正在使用XMPP框架在iPhone上创建聊天应用程序。我可以接收到消息,但无法发送消息。有人能给我解决方案吗?

4个回答

11
- (void)sendMessage:(NSString *)msgContent
{

    NSString *messageStr = textField.text;

    if([messageStr length] > 0)
    {
        NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
        [body setStringValue:messageStr];

        NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
        [message addAttributeWithName:@"type" stringValue:@"chat"];
        [message addAttributeWithName:@"to" stringValue:[jid full]];
        [message addChild:body];

        [xmppStream sendElement:message];



    }
}

在你的ChatViewController中使用上述代码...对我来说它工作得很好。


你的应用程序是否会断开连接 - 当我传递值到发送元素时,状态对我来说是断开的 - 你有什么解决方法吗? - V.V
@iphone Fun:你的问题对我来说不太清楚。无论如何,你可以在你的类中添加-(void)xmppStreamDidDisconnect:(XMPPStream *)sender,这将在你的聊天从网络断开连接时通知你。 - Raj
太棒了!对我有用。 - Nirav Dangi

3
试试这个:
XMPPUserCoreDataStorage *user = [[self fetchedResultsController] objectAtIndexPath:indexPath];

NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
[body setStringValue:strSendMsg];

NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
[message addAttributeWithName:@"type" stringValue:@"chat"];
[message addAttributeWithName:@"to" stringValue:[user.jid full]];
[message addChild:body];

[[self xmppStream] sendElement:message];

2

如果您正在使用XMPP iPhone示例应用程序...您可以使用以下内容,它应该能帮助您入门:

NSString *msgText = @"test reply";

XMPPMessage* msg = [[XMPPMessage alloc] initWithType:@"chat" to:[XMPPJID jidWithString:displayName]];
[msg addBody:msgText];

[_xmppStream sendElement:msg];

请在iPhoneXMPPAppDelegate.m文件中的xmppStream委托方法里,紧跟着他们已经放置的alert下方,插入如下内容:

-(void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message

这将自动向最初发送消息的jid回复"测试回复"

祝你好运!


0

Swift 3的答案:

let user = XMPPJID(string: "user@example.com")
let msg = XMPPMessage(type: "chat", to: user)
msg?.addBody("test message")
self.xmppStream.send(msg)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接