我正在开发一个基于
XMPPFramework和
ejabberd Community Edition server的XMPP iOS应用程序,我正在玩vCard管理.
在我的实验中,我发现在通过以下方式为用户请求vCard时:
[vCardTempModule fetchvCardTempForJID:myJID];
如果用户在服务器上没有vCard,则不会调用任何委托方法.
有没有办法通过服务器的明确答案100%确定用户没有vCard?
或者我应该只考虑用户在没有任何代表反馈的情况下延迟n秒后没有vCard? (对于在移动环境中非常频繁的网络延迟情况,这将是模棱两可的)
最佳答案 在XEP-0054 XMPPvCardTempModule.m中
你需要这样做
- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender {
XMPPvCardTemp *myvCardTemp = [self myvCardTemp];//check if exist or not
if (!myvCardTemp)//if not then create a new vcard
{
NSXMLElement *vCardXML = [NSXMLElement elementWithName:@"vCard" xmlns:@"vcard-temp"];
XMPPvCardTemp *newvCardTemp = [XMPPvCardTemp vCardTempFromElement:vCardXML];
[newvCardTemp setNickname:userName];
[self updateMyvCardTemp:newvCardTemp];
}
}
希望这对你有用 :)