Ios 未调用XMPPFramework发送元素方法
你好,我正在用XMPPFramework制作一个聊天应用程序 我已通过引用以下链接在我的项目中设置了XMPPFramework:- 发送消息的代码:-Ios 未调用XMPPFramework发送元素方法,ios,objective-c,xmppframework,Ios,Objective C,Xmppframework,你好,我正在用XMPPFramework制作一个聊天应用程序 我已通过引用以下链接在我的项目中设置了XMPPFramework:- 发送消息的代码:- NSXMLElement *body = [NSXMLElement elementWithName:@"body"]; [body setStringValue:messageStr]; NSXMLElement *message = [NSXMLElement elementWithName:@"message"]
NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
[body setStringValue:messageStr];
NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
[message addAttributeWithName:@"type" stringValue:@"chat"];
[message addAttributeWithName:@"to" stringValue:fnjid];
[message addChild:body];
[self.xmppStream sendElement:message];
此代码工作正常,但现在无法工作…方法“发送元素””未调用。它位于xmppstream类中
- (void)sendElement:(NSXMLElement *)element
此方法在连接到服务器时调用,但不仅在发送消息时起作用可能是复合和授权有问题
- (void)xmppStreamDidConnect:(XMPPStream *)sender
{
isXmppConnected = YES;
NSError *error = nil;
if (![[self xmppStream] authenticateWithPassword:password error:&error])
{
}
}
And
- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
{
XMPPPresence *presence = [XMPPPresence presenceWithType:@"available"];
[[self xmppStream] sendElement:presence];
}
In this case, the method does not work correctly , because state != STATE_XMPP_CONNECTED
- (void)sendElement:(NSXMLElement *)element
{
if (element == nil) return;
dispatch_block_t block = ^{ @autoreleasepool {
if (state == STATE_XMPP_CONNECTED)
{
[self sendElement:element withTag:TAG_XMPP_WRITE_STREAM];
}
else
{
[self failToSendElement:element];
}
}};
if (dispatch_get_specific(xmppQueueTag))
block();
else
dispatch_async(xmppQueue, block);
}
当未调用
sendElement:
时,self.xmppStream
nil?