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

时间:2014-05-26 16:25:05

标签: ios xmpp ejabberd xmppframework vcard

我正在开发基于XMPPFrameworkejabberd Community Edition server的XMPP iOS应用程序,并且我正在玩vCard管理。

在我的实验中,我发现在通过以下方式为用户请求vCard时:

[vCardTempModule fetchvCardTempForJID:myJID];

如果用户在服务器上没有vCard,则不会调用任何委托方法。

有没有办法通过服务器的明确答案100%确定用户没有vCard?

或者我应该只考虑用户在 n 秒延迟后没有任何代表反馈的情况下没有vCard? (对于在移动环境中非常频繁的网络延迟情况,这将是模棱两可的)

1 个答案:

答案 0 :(得分:2)

在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];
    }

}

希望它适合你:)