2014-02-08 37 views
1

我正在开发一个使用quickblox api的android应用程序。我正在使用聊天SMACK功能(1对1聊天),我尝试从聊天接收消息。我可以检索消息文本,但我无法获得海关参数。quickblox,如何在聊天中检索自定义参数?

这是一个关于我的消息变量屏幕:

enter image description here

的值,我需要是存储在“地图”的值:节奏,telefono,stato,诺姆,prefisso ..我怎么可以检索?我只是尝试搜索quickblox文档,但当尝试实现DefaultPacketExtension时出现api错误。

谢谢

回答

1

下面是一个例子,如何使用QuickBlox的Android SDK 1.1

要使用额外的参数发送消息做到这一点:

Map<String, Object> addinfoParams = new HashMap<String, Object>(); 
addinfoParams.put(Consts.AGE, 22); 
addinfoParams.put(Consts.TYPE, "actor"); 

final String BODY = "Hey QuickBlox!"; 

Message message = createMsgWithAdditionalInfo(USER_ID, BODY, addinfoParams); 

Log.i(TAG, "message: " + message.toXML()); 
try { 
    qbPrivateChat.sendMessage(USER_ID, message); 
} catch (XMPPException e) { 
    e.printStackTrace(); 
} 

... 

private Message createMsgWithAdditionalInfo(int userId, String body, Map<?, ?> addinfoParams){ 
     Message message = new Message(QBChatUtils.getChatLoginFull(userId), Message.Type.chat); 
     String addInfo = ToStringHelper.toString(addinfoParams, "", Consts.ESCAPED_AMPERSAND); 
     MessageExtension messageExtension = new MessageExtension(Consts.QB_INFO, ""); 
     try { 
      messageExtension.setValue(Consts.ADDITIONAL_INFO, addInfo); 
     } catch (BaseServiceException e) { 
      e.printStackTrace(); 
     } 
     message.addExtension(messageExtension); 
     message.setBody(body); 
     return message; 
} 

要接收消息并获得自定义参数:

chatMessageListener = new ChatMessageListener() { 
      @Override 
      public void processMessage(Message message) { 
       String from = message.getFrom(); 
       String messageBody = message.getBody(); 

       List<MessageExtension> messageExtensions = message.getExtensions(); 

      } 

      @Override 
      public boolean accept(Message.Type type) { 
       switch (type) { 
        case normal: 
        case chat: 
        case groupchat: 
         return true; 
        default: 
         return false; 
       } 
      } 
     }; 

更多的信息在Chat snippets https://github.com/QuickBlox/quickblox-android-sdk/blob/master/snippets/src/com/quickblox/snippets/modules/SnippetsChat.java