无法使用 XMPPFramework 获取 VCard

Unable to get VCard using XMPPFramework

我无法使用此代码使用 XMPPFramework 获取 VCard 信息

XMPPJID *jid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@myserver", myId]];
XMPPvCardTemp *vcard = [[DBChatManager shareInstance].xmppvCardTempModule vCardTempForJID:jid shouldFetch:YES];

它 return 没有响应,但在日志记录中我看到它获取了 VCard。虽然我可以成功更新和创建 VCard。

经过大量搜索,我发现在 class XMPPvCardTempModule.m 中,我的团队成员评论了以下几行

XMPPvCardTemp *vCardTemp = [XMPPvCardTemp vCardTempCopyFromIQ:iq];
if (vCardTemp != nil)
{
    [self _updatevCardTemp:vCardTemp forJID:[iq from]];

    return YES;
}

取消注释以上几行后,我能够在

中获取针对 JID 的 VCard 详细信息
- (void)xmppvCardTempModule:(XMPPvCardTempModule *)vCardTempModule
    didReceivevCardTemp:(XMPPvCardTemp *)vCardTemp
                 forJID:(XMPPJID *)jid

根据我的情况使用

验证后使用 XMPPvCardCoreDataStorage 和 XMPPvCardTempModule

- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender {

    [self goOnline];
    if ([xmppStream isAuthenticated]) {
        NSLog(@"authenticated");
        xmppvCardStorage = [[XMPPvCardCoreDataStorage alloc] initWithInMemoryStore];
        xmppvCardTempModule = [[XMPPvCardTempModule alloc] initWithvCardStorage:xmppvCardStorage];
        [xmppvCardTempModule activate:[self xmppStream]];
        [xmppvCardTempModule addDelegate:self delegateQueue:dispatch_get_main_queue()];
        [xmppvCardTempModule fetchvCardTempForJID:[sender myJID] ignoreStorage:YES];
    }

}

- (void)xmppvCardTempModule:(XMPPvCardTempModule *)vCardTempModule didReceivevCardTemp:(XMPPvCardTemp *)vCardTemp forJID:(XMPPJID *)jid{

        XMPPvCardTemp *vCard = [xmppvCardStorage vCardTempForJID:jid xmppStream:xmppStream];
        NSLog(@"%@", vCard.description);
    }