4

私のアプリケーションでは、このコードを使用して友達にリクエストを送信します。

try {               
                roster.createEntry(idExtension, nickname, null);
                roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
                Presence subscribe = new Presence(Presence.Type.subscribe);
                subscribe.setTo(idExtension);               
                connection.sendPacket(subscribe);


                return true;
            } catch (XMPPException e) {
                System.err.println("Error in adding friend");
                return false;
            }

次に、サブスクリプションは両方の友達名簿に「なし」と表示されます。

ただし、「TO」と「FROM」である必要があります。

しかし、同じプロセスでこのコードを使用する場合-

try {               
                roster.createEntry(idExtension, nickname, null);
                roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
                Presence subscribed = new Presence(Presence.Type.subscribed);
                subscribed.setTo(idExtension);              
                connection.sendPacket(subscribed);


                return true;
            } catch (XMPPException e) {
                System.err.println("Error in adding friend");
                return false;
            }

次に、前のケースで取得する必要がある正しい結果が得られます。

SUBSCRIBEモードで同じにならない理由を教えてください。

ありがとう

4

1 に答える 1

3

プレゼンスでタイプの意味を理解していないと思います。

サブスクライブ-送信者は受信者のプレゼンスをサブスクライブしたいと考えています。

サブスクライブ-送信者は、受信者がプレゼンスを受信することを許可しました。

したがって、最初のイベントを送信するときは、ユーザーにプレゼンスイベントのサブスクライブを許可するように要求し、ユーザーが許可しない限り、サブスクリプションタイプはnoneです。

2番目のケースでは、ユーザーにプレゼンスのサブスクライブを許可しました。つまり、プレゼンスをリッスンする許可をユーザーに付与し、サブスクリプションタイプを取得します。

于 2012-10-19T14:11:18.270 に答える