使用xmppframework提取vCard返回错误结果

时间:2018-11-05 09:14:07

标签: swift xmppframework vcard

我有一个小问题,当我第一次注册用户时,该用户使用以下代码查找电子名片

        let number = UserDefaults.standard.object(forKey: "phonenumbers") as? [String]
        for index in number!
        {
            let jID = XMPPJID(string: index + "@www.example.com")
            let statusFinal = XMPPTest.shared.searchUsername(username: jID!)
            if (statusFinal.0 == true)
            {
                print("JIDDD")
                print(index)
                XMPPTest.shared.addUserToRoster(username: jID!, nick: index)
                self.statusArray.append(true)
            }
            else
            {
                self.statusArray.append(false)
            }
        }

以下是func searchUsername

  func searchUsername(username : XMPPJID) -> (Bool,UIImage?)
{


    let xmppvCardStorage = XMPPvCardCoreDataStorage.sharedInstance()
    let xmppvCardTempModule = XMPPvCardTempModule.init(vCardStorage: xmppvCardStorage!)
    xmppvCardTempModule.activate(self.stream)
    xmppvCardTempModule.addDelegate(self,delegateQueue:DispatchQueue.global(qos: .userInteractive))
    let vCard = xmppvCardTempModule.vCardTemp(for: username, shouldFetch: true)
    if (vCard?.stringValue != nil)
    {
        if !((vCard?.stringValue?.isEmpty)!)
        {

            if ((vCard?.photo) != nil)
            {
                let profilePic = vCard?.photo
                let image = UIImage(data: (profilePic!))
                return (true,image)
            }
            else
            {
                return (true,nil)
            }
        }
        else
        {return (false,nil)}
    }
    else
    {
        return (false,nil)
    }
}

问题是,如果我是首次注册用户,并且请求vcard,我收不到正确的结果(我确定有些用户没有vcard,尽管我确定这些用户有vcard。我可以再次检查我的后端。)当我退出并再次登录并查找相同的vcard时,我得到了正确的结果。最后,当我第一次注册时检查委托方法

 func xmppvCardTempModule(_ vCardTempModule: XMPPvCardTempModule, didReceivevCardTemp vCardTemp:
    XMPPvCardTemp, for jid: XMPPJID) {
    print(vCardTemp.nickname)


}

我发现我多次收到同一个人的vcard超过500次。我的问题是,为什么我第一次注册时一开始会收到错误的vcard结果。错误的意思是,响应表明即使上传了vcard,也没有上传vcard

0 个答案:

没有答案