- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我能够向用户发送消息,这意味着我有一个有效且经过身份验证的 xmppStream。
但是我无法从服务器发送和接收确认。我想知道服务器成功接收了哪条消息。我用谷歌搜索,发现应该为此实现 XEP-0198。我使用 ejabberd 作为 XMPP 服务器,它支持 XEP-0198。
我试过了,但我不知道我这样做对不对。
首先,我包含了头文件并添加了 XMPPStreamManagementDelegate。
#import "XMPPStreamManagement.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate,XMPPStreamManagementDelegate>
在实现文件中,我是这样定义流的。
XMPPStream *xmppS = [[XMPPStream alloc] init];
[xmppS addDelegate:self delegateQueue:dispatch_get_main_queue()];
XMPPStreamManagement *xsm = [[XMPPStreamManagement alloc] init];
[xsm addDelegate:self delegateQueue:dispatch_get_main_queue()];
[xsm activate:xmppS];
之后我连接到服务器。连接成功后,我发送一个启用节。
NSXMLElement *enable = [NSXMLElement elementWithName:@"enable" xmlns:@"urn:xmpp:sm:3"];
[xsm.xmppStream sendElement:enable];
然后我发消息
NSXMLElement *a = [NSXMLElement elementWithName:@"request" xmlns:@"urn:xmpp:receipts"];
XMPPElement *e = [[XMPPElement alloc] initWithName:@"message"];
[e addAttributeWithName:@"id" stringValue:@"123456"];
[e addAttributeWithName:@"type" stringValue:@"chat"];
[e addAttributeWithName:@"to" stringValue:@"testuser@myxmppserver.com"];
[e addAttributeWithName:@"from" stringValue:@"testuser2@myxmppserver.com"];
[e addChild:a];
[xsm.xmppStream sendElement:e];
测试用户收到消息,测试用户 2 收到收到的节。
<received xmlns="urn:xmpp:receipts" id="123456"/>
我的问题是如果我发送以下节,我没有收到消息。
NSXMLElement *r = [NSXMLElement elementWithName:@"r"];
[xsm.xmppStream sendElement:r];
我实现了以下功能
-(void)xmppStreamManagementDidRequestAck:(XMPPStreamManagement *)sender
{
NSLog(@"ACK");
}
但是仍然没有打印出来。请帮忙。另外,我怎么知道服务器何时收到发送的消息。
如果有人想从我这边了解代码的任何其他部分,请告诉我。
最佳答案
您可以使用 xmppStreamManagement 中的函数来发送请求并获取接收到的 id:
[xmppStreamManagement requestAck];
和
- (void)xmppStreamManagement:(XMPPStreamManagement *)sender wasEnabled:(NSXMLElement *)enabled
- (void)xmppStreamManagement:(XMPPStreamManagement *)sender didReceiveAckForStanzaIds:(NSArray *)stanzaIds
确保通过以下方式启用流管理:
[self.xmppStreamManagement enableStreamManagementWithResumption:YES maxTimeout:0];
关于ios - iOS 中的 XMPPStreamManagement 无法发送/接收确认和节 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28615170/
我的 Tableview 有 N 个部分,其中 0,1 个部分是固定的。永远不会从 TableView 中删除。但从第2节开始到第N节,可以删除或插入。从第 2 部分到 N 部分 -> 每个部分也有行
节/段指令有多重要?我注意到它们通常是可选的。另外,我注意到当您包含或不包含它们时,输出大小会发生变化。 我正在使用NASM ,如果有帮助的话。 最佳答案 它们非常重要,因为如果将字符串保存在代码段中
我正在尝试使用已解析并存储在字典中的Firestore数据填充tableview的Sections and Rows,看起来像这样... dataDict = ["Monday": ["Chest",
所以这应该是相当基本的......我正在这样做,但我想要求一些不同的选择。 一种选择是使用“平滑滚动”和 anchor 名称......但我发现这非常不一致。 这是我的 HTML 结构:
我尝试将 3 篇文章嵌套到一个部分中。为什么它们会溢出部分的边界? CSS: article{ border-right:solid 1px grey; height:50%; width:30%;
早上好伙计们,这只是我在这里的第二个问题,所以请耐心等待我和我的最低要求: 我刚刚写了这篇冗长的消息,说明如何将 ID 和 class 命令放在 section 而不是 容器中,以及为什么该部分突然覆
我正在尝试使用以下代码段编码消息: JAXBContext jContext = JAXBContext.newInstance(Iq.class); Marshall
我正在尝试使用以下代码段编码消息: JAXBContext jContext = JAXBContext.newInstance(Iq.class); Marshall
我需要生成一个 PDF 文档,其中我需要一些“章节”(连同其部分和小节)没有编号但仍包含在 ToC 中。 这是我的硕士论文。我正在使用 book 文档类,因为我不喜欢 memoir 默认值。 如果我使
我正在使用正则表达式来尝试匹配 INI 文件中的节 block 。我正在使用书中给出的食谱Regular Expressions Cookbook ,但它似乎对我不起作用。 这是我正在使用的代码: f
我有一个多线程进程,其中文件由多个线程共享(读取和写入)。有没有什么办法可以让一个线程锁定一个文件段,使其他线程无法访问它?我尝试过fcntl(fd, F_SETLKW, &flock),但是这个锁只
Closed. This question needs to be more focused。它当前不接受答案。
我正在尝试使用以下代码片段编码消息: JAXBContext jContext = JAXBContext.newInstance(Iq.class); Marshal
我使用的是分段 tableView。如果我单击 tableview,它总是将索引路径 0 传递给详细 View Controller 。如果我单击第二行,但它的 indexpath pass 总是传递
我有一个多线程进程,其中一个文件由多个线程共享(读取和写入)。有没有什么方法可以让一个线程锁定一个文件段,使其他线程无法访问它?我试过fcntl(fd, F_SETLKW, &flock),但是这个锁
我正在尝试使用以下代码片段编码消息: JAXBContext jContext = JAXBContext.newInstance(Iq.class); Marshal
我想创建一个“术语”部分,其中包含我正在使用的术语的定义,以便每次我在此术语部分中使用这些术语时,都会创建一个指向该定义的链接。 目前,我能想到的最好的方法是: .. |flavor| replace
文档引用 configuring information with stanzas ,但什么是节? 它只是配置子部分的一个花哨名称吗? 最佳答案 您是对的,在此上下文中,节是指 IBM MQ 配置文件
我正在尝试在消息包中接收 XMPP 自定义节。例如, wololo haiooh ... 关键是我知道我会收到一个“custom_sta
为什么这是有效的: (= '(:anything :goes :here) (filter (fn [x] true) '(:anything :goes :here))) 但不是这个? (= (:a
我是一名优秀的程序员,十分优秀!