XMPPFramework - 如何更新自己的头像图像?

ven*_*kat 4 xmpp avatar ios xmppframework

我正在开发一个应用程序,我想更新我的头像图像.我遵循XEP-0153指导更新我的头像图像,我构造了一个NSXMLElement对应于以下代码XEP-0153并通过该元素发送XMPPStream.

<iq from='juliet@capulet.com' 
    type='set'
    id='vc1'>
  <vCard xmlns='vcard-temp'>
    <PHOTO>
      <TYPE>image/jpeg</TYPE>
      <BINVAL>
        Base64-encoded-avatar-file-here!
      </BINVAL>
    </PHOTO>
  </vCard>
</iq>
Run Code Online (Sandbox Code Playgroud)

服务器响应以下错误:

<iq xmlns="jabber:client" type="error" id="vc1" to="vvreddy50@gmail.com/83557F96">
<vCard xmlns="vcard-temp">
      <photo>
        <type>image/jpeg</type>
        <binval>Base64-encoded-avatar-file-here</binval>
      </photo>
</vCard>
<error code="500" type="wait">
      <internal-server-error xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">
      </internal-server-error>
</error>
</iq>
Run Code Online (Sandbox Code Playgroud)

代替 <iq to='juliet@capulet.com' type='result' id='vc1'/>

请问任何人都可以发布与更新头像图片相关的代码或链接吗?提前致谢.

小智 10

- (void)updateAvatar:(UIImage *)avatar 
{
    NSData *imageData = UIImagePNGRepresentation(avatar);
    dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_PRIORITY_DEFAULT);
    dispatch_async(queue, ^{
        XMPPvCardTempModule *vCardTempModule = [[XMPPHandler sharedInstance] xmppvCardTempModule];
        XMPPvCardTemp *myVcardTemp = [vCardTempModule myvCardTemp];
        [myVcardTemp setName:[NSString stringWithFormat:@"%@",name.text]];
        [myVcardTemp setPhoto:imageData];
        [vCardTempModule updateMyvCardTemp:myVcardTemp];
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 什么是XMPPHandler? (3认同)