gpt4 book ai didi

ios - 未发送使用 XMPP 节在 iOS 中实现最后看到的功能

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:15:42 25 4
gpt4 key购买 nike

我正在使用一个应用程序,它可以像 whatsapp 一样聊天并具有上次看到的功能我已经引用了这个答案

How to implement "last seen at" functionality (like whatsapp) in XMPP?

我是这样实现聊天界面的代码的

NSXMLElement *queryElement = [NSXMLElement elementWithName: @"query" xmlns: @"jabber:iq:last"];
NSXMLElement *iqStanza = [NSXMLElement elementWithName: @"iq"];
[iqStanza addAttributeWithName: @"type" stringValue: @"get"];
[iqStanza addAttributeWithName:John@192.168.1.100 stringValue: @"from"];
[iqStanza addAttributeWithName:Jacob@192.168.1.100 stringValue: @"to"];
[iqStanza addAttributeWithName: @"last1" stringValue: @"id"];
[iqStanza addChild: queryElement];
[self.xmppStream sendElement:iqStanza];

但我仍然没有得到最后一次看到,当我做错时,任何人都可以帮助我吗?并且既不发送节也不接收上次看到的节。提前致谢。

最佳答案

我认为您混淆了“addAttributeWithName”值。

你在使用 this iOS XMPP Framework

如果你导入了 XMPPIQ 和 XMPPJID,你可以试试这个:

XMPPIQ *lastActivity = [[XMPPIQ alloc] initWithType:@"get" to:[XMPPJID jidWithString:@"Jacob@192.168.1.100"]];
[lastActivity addAttributeWithName:@"from" stringValue:@"John@192.168.1.100"];
[lastActivity addAttributeWithName:@"id" stringValue:@"last1"];
[lastActivity addChild:[[XMPPIQ alloc] initWithName:@"query" xmlns:@"jabber:iq:last"]];
[self.xmppStream sendElement:lastActivity];

或者您可以为此导入 XMPPLastActivity.h:

[xmppLastActivity sendLastActivityQueryToJID:[XMPPJID jidWithString:@"Jacob@192.168.1.100"]];

如果你想坚持使用 NSXMLElement:

NSXMLElement *iqStanza = [NSXMLElement elementWithName: @"iq"];
[iqStanza addAttributeWithName: @"type" stringValue: @"get"];
[iqStanza addAttributeWithName: @"from" stringValue:@"John@192.168.1.100"];
[iqStanza addAttributeWithName: @"to" stringValue: @"Jacob@192.168.1.100"];
[iqStanza addAttributeWithName: @"id" stringValue: @"last1"];

NSXMLElement *queryElement = [NSXMLElement elementWithName: @"query" xmlns: @"jabber:iq:last"];
[iqStanza addChild: queryElement];

[self.xmppStream sendElement:iqStanza];

您的 attributeWithName 是“字段名称”,stringValue 是您的参数。哦,不要忘记用 @"{STRING HERE}" 将字符串括起来。

编辑:

至于回复,我想你会从:

- (void)xmppLastActivity:(XMPPLastActivity *)sender didReceiveResponse:(XMPPIQ *)response {        
}

假设您已经设置了代理(如果您在 setUpStream 方法中设置了它):

xmppLastActivity = [[XMPPLastActivity alloc] initWithDispatchQueue:dispatch_get_main_queue()];
[xmppLastActivity addDelegate:self delegateQueue:dispatch_get_main_queue()];
[xmppLastActivity activate:xmppStream];

XMPPIQ+LastActivity.h 中声明了一些方便的方法,但我不确定如何使用它们。只需尝试记录响应即可。

- (void)xmppLastActivity:(XMPPLastActivity *)sender didReceiveResponse:(XMPPIQ *)response {
NSLog(@"last activity: %lu", (unsigned long)[response lastActivitySeconds]);
NSLog(@"response: %@", response);

}

关于ios - 未发送使用 XMPP 节在 iOS 中实现最后看到的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26358049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com