【问题标题】:How to be sure my XMPP user has no vCard using the XMPPFramework?如何确定我的 XMPP 用户没有使用 XMPPFramework 的 vCard?
【发布时间】:2014-07-15 11:21:01
【问题描述】:

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

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

[vCardTempModule fetchvCardTempForJID:myJID];

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

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

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

【问题讨论】:

    标签: ios xmpp ejabberd xmppframework vcf-vcard


    【解决方案1】:

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

    希望它对你有用:)

    【讨论】:

    • 在[self myvCardTemp]中,myvCardTemp也被声明为类变量?另外 [self updateMyvCardTemp:newvCardTemp],updateMyvCardTemp 似乎是在同一个类中声明的方法,而不是你调用它的方式的 delagate 或 xmppFramework 方法。提前谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 2011-06-25
    相关资源
    最近更新 更多