我从 XMPPFramework for iOS 下载了 SampleProject 并将其连接到我的 Jabber 服务器。一切还好。
但即使我已断开连接(连接丢失),我也想让我的好友留在好友概览中。那可能吗?据我了解,XMPPCoreStorage 将它们保存在 CoreData 中。为什么在断开连接时会被清理?是否可以在断开连接时禁用清洁?我很不幸地没有找到方法。
如果它不是持久的,那真的会很烦人并且流量很大吗?
任何帮助都会很棒!
我从 XMPPFramework for iOS 下载了 SampleProject 并将其连接到我的 Jabber 服务器。一切还好。
但即使我已断开连接(连接丢失),我也想让我的好友留在好友概览中。那可能吗?据我了解,XMPPCoreStorage 将它们保存在 CoreData 中。为什么在断开连接时会被清理?是否可以在断开连接时禁用清洁?我很不幸地没有找到方法。
如果它不是持久的,那真的会很烦人并且流量很大吗?
任何帮助都会很棒!
所以我想出了一个解决方案:
在 XMPPRoster.m xmppStreamDidDisconnect 上:
我注释掉了 4 行。现在看起来像这样:
- (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error
{
// This method is invoked on the moduleQueue.
XMPPLogTrace();
// [xmppRosterStorage clearAllUsersAndResourcesForXMPPStream:xmppStream];
//
// [self _setRequestedRoster:NO];
// [self _setHasRoster:NO];
//
// [earlyPresenceElements removeAllObjects];
}
所以它不会在断开连接时清除存储。在重新连接时,它将清理并用更新的信息重新填充存储。希望它可以帮助其他人。它不是一个完美的解决方案。一个首选是构建您自己的 CoreData 模型并在其中获取 XMPP 内容..