ios – 如何确保我的XMPP用户没有使用XMPPFramework的vCard?

我正在开发一个基于
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];
    }

}

希望这对你有用 :)

点赞