2014-02-08 2 views
1

Я разрабатываю приложение для Android, используя quickblox api. Я использую функцию чата SMACK (от 1 до 1 чата), и я пытаюсь получить сообщение из чата. Я могу получить текст сообщения, но я не могу получить таможенные параметры.quickblox, как получить пользовательские параметры в чате?

Вот экран о моих переменных сообщениях:

enter image description here

Значения я обязательно являюсь значением, хранящимся в «карте»: темпе, TELEFONO, Stato, номе, prefisso .. как я могу получить это ? Я просто пытаюсь выполнить поиск по документации quickblox, но у меня ошибка api при попытке реализовать DefaultPacketExtension.

Спасибо

ответ

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

Дополнительная информация в Чаты фрагментов https://github.com/QuickBlox/quickblox-android-sdk/blob/master/snippets/src/com/quickblox/snippets/modules/SnippetsChat.java

Смежные вопросы