2012-04-02 4 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));