iOS 的 Robbiehanson xmpp 框架未收到聊天消息

Robbiehanson xmpp framework for iOS not receiving chat messages

尝试使用 robbiehanson xmpp frame work 创建一个非常简单的概念验证 iOS xmpp 应用程序 frame work,只需要能够发送和接收消息以及名册数据。我可以成功验证和发送消息,但是当用户尝试回复我的消息时,我没有收到它们。我已经实现了 didReceiveMessage 委托方法,如下所示:

-(void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message {
    NSLog(@"incoming message: %@", message);
}

但我从未收到过此日志。如果我使用现有的网络应用程序或与此 xmpp 服务器通信的 android 应用程序登录,我会收到这些消息,因此我倾向于认为它们的格式正确。是否需要将模块添加到 XMPPStream 以接收消息?我正在像这样设置流(一些字符串值已经为了安全而改变了,什么不是):

stream = [[XMPPStream alloc] init];
stream.enableBackgroundingOnSocket = YES;
stream.hostName = @"hostname.com";
stream.hostPort = 5222;

XMPPRosterCoreDataStorage* xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc]      initWithInMemoryStore];
XMPPRoster* xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:xmppRosterStorage];
xmppRoster.autoFetchRoster = YES;
xmppRoster.autoAcceptKnownPresenceSubscriptionRequests = YES;
[stream addDelegate:self delegateQueue:dispatch_get_main_queue()];

XMPPJID* jid = [XMPPJID jidWithUser:@"username" domain:@"domain.com" resource:@"iOS"];

[stream setMyJID:jid];

[xmppRoster activate:stream];

[stream connectWithTimeout:XMPPStreamTimeoutNone error:&error]

然后在 xmppStreamDidConnect 方法中执行此操作以进行身份​​验证

NSString *myPassword = @"password";
NSError *error = nil;

[stream authenticateWithPassword:myPassword error:&error]

当我发送消息时,我使用这个片段:

 MPPJID* recipient = [XMPPJID jidWithString:@"user@domain.com"];
XMPPMessage* message = [[XMPPMessage alloc] initWithType:@"chat" to:recipient];
[message addBody:@"hello world"];

[stream sendElement: message];

我想我缺少一些简单的东西,以前使用过它的人可以立即向我指出。如果需要解决此问题,我准备提供其他信息。

我只需要广播我的存在,然后我就可以接收消息了。

我将这些行添加到 streamDidAuthenticate 方法

XMPPPresence *presence = [XMPPPresence presence];
[sender sendElement:presence];