2

XMPPStream クラスのデリゲート メソッドのいくつかを実装しようとしています。そのうちの 1 つはxmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence. 私は 2 人のユーザーを登録しており、両方とも互いのプレゼンス通知を購読しています。私が気づいたことは、didReceivePresenceユーザーが承認した場合にのみメソッドが呼び出されることです。ユーザーを切断および/または接続しても、サブスクライバーには通知されません。サブスクライブしているユーザーがオフライン/オンラインになったときに通知を受け取るにはどうすればよいですか? XMPPStream にプレゼンスを送信するために使用するコードは次のとおりです。

- (void) goOnline
{
    XMPPPresence *presence = [XMPPPresence presence];
    [_stream sendElement:presence];
}

- (void) goOffline
{
    XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];
    [_stream sendElement:presence];
}
4

1 に答える 1

3

実際、私の設定は正しかったのですが、私はユーザーのプレゼンス通知を購読していませんでした。彼が私の名簿に含まれていれば、この通知を自動的に受け取ると思っていました。メソッドを使用して、プレゼンス サブスクリプション リクエストを受け入れる必要があることを忘れないでくださいacceptPresenceSubscriptionRequestFrom。サブスクリプション リクエストを受け取ると、ユーザーは自動的にあなたの名簿に追加され、あなたは彼の名簿に追加されますが、サブスクリプション リクエストを受け入れない限り、両方ともプレゼンス メッセージを受信しません。

于 2013-07-26T09:01:34.777 に答える