2015-10-05 9 views
8

मैं एंड्रॉइड ऐप के भीतर चैट फीचर के लिए स्मैक लाइब्रेरी v4.1.0 (एस्मैक नहीं) का उपयोग कर रहा हूं। मैं काम करने के लिए निम्न दो सुविधा प्राप्त करने के लिए प्रतीत नहीं कर सकते हैं:एंड्रॉइड - स्मैक उपस्थिति और "टाइपिंग" विशेषताएं काम नहीं कर रही हैं

  1. उपयोगकर्ता उपस्थिति (ऑनलाइन, अंतिम बार देखा गया)
  2. चैट संदेश स्थिति (भेजा गया, वितरित, पढ़ें)

उपयोगकर्ता उपस्थिति के लिए , मैं निम्नलिखित कोड का उपयोग करता हूं जो हमेशा null देता है।

Presence userPresence = roster.getPresence(toUser); 
System.out.println("*** User status: " + userPresence.getStatus()); 

if (userPresence.getMode() == Presence.Mode.available || userPresence.getMode() == Presence.Mode.chat) { 
    lblIsTyping.setText("Online"); 
} else { 
    lblIsTyping.setText("Offline"); 
} 

संदेश स्थिति के लिए, मैं निम्नलिखित कोड का उपयोग करें:

private class MessageListenerImpl implements MessageListener, ChatStateListener { 

    @Override 
    public void processMessage(Chat chat, Message message) { 
     processMessageCore(message); 
    } 

    @Override 
    public void stateChanged(Chat chat, ChatState chatState) { 
     System.out.println("*** chat: " + chat.toString()); 
     if (ChatState.composing.equals(chatState)) { 
      lblIsTyping.setText("typing..."); 
      System.out.println("Chat State: " + chat.getParticipant() + " is typing.."); 
     } 
    } 

    @Override 
    public void processMessage(Message message) { 
     processMessageCore(message); 
    } 
} 

और के रूप में इसका इस्तेमाल करते हैं:

ChatManager.getInstanceFor(HCSmackService.getInstance().getConnection()).createChat(toUser, mThreadID, new MessageListenerImpl());

लेकिन कॉलबैक कभी लागू नहीं होती है।

नई स्मैक लाइब्रेरी के साथ एंड्रॉइड पर इन्हें कैसे काम करना है? क्या किसी ने पहले से ही इन सुविधाओं को लागू किया है?

धन्यवाद!

+0

जब आप रिसीवर काम करता है तो उपयोगकर्ता ऑनलाइन और ऑफ़लाइन स्थिति प्राप्त करने में सक्षम होता है, तो रिसीवर काम करता है लेकिन आपको अपने कोडिंग साइड से अंतिम बार बनाए रखना होगा। –

उत्तर

3
  1. उपयोगकर्ता प्रस्तुत करने के लिए आपको पहले initial presence भेजने की आवश्यकता है। नोट, type विशेषता के बिना उपस्थिति पैकेट "ऑनलाइन" उपस्थिति माना जाता है।

  2. Chat states आपके दोस्त के क्लाइंट एप्लिकेशन द्वारा जेनरेट किए जाते हैं। आम तौर पर वे "ऑफलाइन" संपर्कों और संपर्कों में चैट राज्य नहीं भेजते हैं जो "रोस्टर में" नहीं हैं।

संबंधित मुद्दे