注意:服务器已经安装并运行流管理。
这是我的代码:
XMPPStreamManagementMemoryStorage *storage1=[[XMPPStreamManagementMemoryStorage alloc] init];
xmppStreamManagement=[[XMPPStreamManagement alloc] initWithStorage:storage1];
xmppStreamManagement.autoResume = YES;
[xmppStreamManagement enableStreamManagementWithResumption:TRUE maxTimeout:5];
[xmppStreamManagement addDelegate:self delegateQueue:dispatch_get_main_queue()];
[xmppStreamManagement activate:xmppStream];
[xmppStreamManagement requestAck];
我也实现了委托(delegate)方法。 但是我既没有在委托(delegate)方法中得到响应,也没有看到流管理工作。
它将如何工作以及我们如何验证它?
这里,如果我在iOS端实现流管理成功,那么离线消息会自动丢失
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
我们将不胜感激。
最佳答案
在您的 iOS 应用中启用 XMPPStreamManagement
非常容易。
使用XMPPStreamManagementMemoryStorage
初始化您的XMPPStreamManagement
实例。
XMPPStreamManagementMemoryStorage *xmppSMMS = [[XMPPStreamManagementMemoryStorage alloc] init];
xmppStreamManagement = [[XMPPStreamManagement alloc] initWithStorage:xmppSMMS];
添加你的实现类作为它的委托(delegate)
[xmppStreamManagement addDelegate:self delegateQueue:dispatch_get_main_queue()];
一旦 XMPPStream
已连接并发生绑定(bind),现在启用流管理。
[xmppStreamManagement activate:xmppStream];
xmppStreamManagement.autoResume = YES;
[xmppStreamManagement enableStreamManagementWithResumption:YES maxTimeout:0];
[xmppStreamManagement requestAck];
实现委托(delegate)方法
- (void)xmppStreamManagement:(XMPPStreamManagement *)sender wasEnabled:(NSXMLElement *)enabled{
}
- (void)xmppStreamManagement:(XMPPStreamManagement *)sender wasNotEnabled:(NSXMLElement *)failed{
}
- (void)xmppStreamManagement:(XMPPStreamManagement *)sender didReceiveAckForStanzaIds:(NSArray *)stanzaIds{
}
关于ios - XMPP 在 objective-C 中实现 XEP-0198,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36905762/