2012-04-02 1 views
0

smack API를 사용하여 사용자에게 보낸 연락처 요청을 수락하거나 거부합니다. 클라이언트를 렌더링하기 전에 (내 제품에 알림 시스템이 있고 다른 사용자의 명단에 추가 될 때 사용자에게 알림을 생성합니다) 구독 요청 상태를 알고 싶습니다. 그래서 사용자가 받아들이거나 거부 할 수있는 버튼을 보여줄 수 있으며, 이미 발생한 행동이 "이미 동의했거나 거절되었습니다"라고 말하면 메시지가 표시됩니다.XMPP에서 연락처 요청을 찾는 방법이 수락 또는 거부 되었습니까?

사용자 A가 B로부터 요청을 받았고 A가 요청을 수락하면 로스터 항목의 가입 상태가 FROM 또는 BOTH가된다는 것을 알고 있습니다. 그러나 특정 사용자의 가입 요청을 거부했는지 어떻게 알 수 있습니까?

답변

0

사용자가 대화 상대 추가 요청을 거부했는지 확인합니다. Presence 클래스의 패킷을 필터링하여 PacketListener를 등록해야합니다. 이 경우 요청을 거부 한 사용자로부터 수신 거부 된 유형의 현재 상태 패킷을 받게됩니다.

public class RequestListener implements PacketListener { 
    @Override 
    public void processPacket(Packet pack) { 
     Presence pres = (Presence) pack; 
     if (pres.getType() != null && 
        pres.getType().equals(Presence.Type.unsubscribed)) { 
      // user with jid pres.getFrom() rejected your request. 
     } 
    } 
} 

// somewhere in code to register the request listener after login 
connection.addPacketListener(new RequestListener(), 
     new PacketTypeFilter(Presence.class));