この質問が以前にも出されたことは知っていますが、ここでmskonaker から提供された回答は部分的なものにすぎません。私のウェブサイトでは、ユーザーは自分の名簿に人を追加できます。次に、バディが受け入れる必要があり、最終的に接続されます。最初の人 (ユーザー a) は、有名な
roster.createEntry(jid, name, groups);
これは機能し、彼の名簿にエントリを追加しますが、何をすべきか少し混乱しています:
相手側でリクエストを受け取るにはどうすればよいですか? 私は PacketListener を実装し、processPacket() をオーバーライドし、Presence.Type.subscribe または Presence.Type.subscribed であるパケットをチェックしようとしましたが、それはユーザー a に対してのみトリガーされているように見えますが、リッスンする必要があるものではないようですサブスクリプション - ユーザー b.
次に、ログイン時にすべてのリクエストを検索できる別の機能があるため、再度ログインするとリクエストが表示されますが、どうすればそれを受け入れることができますか? 最初は、ユーザー b もユーザー a を自分の名簿に追加する必要があると考えていました。
roster.createEntry(jid, name, groups);
しかし、それはうまくいかず、何も起こっていませんでした。私もやってみました
Presence subscribed = new Presence(Presence.Type.subscribed);
subscribed.setTo(jid);
xMPPConnection.sendPacket(subscribed);
しかし、どちらも機能しませんでした。それを行うための適切で簡単な方法があるに違いないと確信していますが、これまでのところどこにも見つけられず、一度に1つずつ試してみると、頭が痛くなりすぎました。誰かがこれの正しい流れを知っていますか? 前もって感謝します!