今日は XMPPFramework に挑戦しています...
私は ejabberd を正しく構成しました。サーバーは稼働しており、インバンド登録によってユーザーを正しく登録しています。
しかし、あるデバイスからサブスクリプション リクエストを送信しようとすると、2 番目のデバイスは最初のデバイスのプレゼンスを受信できません。文書化されているように、ユーザーをサブスクライブするために最初のデバイスで使用するコードは次のとおりです。
[[[self appDelegate] xmppRoster] addUser:userJID withNickname:nickname groups:nil subscribeToPresence:YES];
すべてがうまくいけば、2 番目のデバイスはデリゲート メソッドを起動する必要があります。
- (void)xmppRoster:(XMPPRoster *)sender didReceiveBuddyRequest:(XMPPPresence *)presence
問題は、このデリゲート メソッドが起動されないことです。サーバーはユーザーの新しい連絡先を作成します。ejabberd Web 管理者で確認できますが、サブスクリプション タイプは [なし] に設定されています。
何か案は?
アップデート:
うーん、ホスト名を JID に含めるのを忘れていたようです。現在、XMPPRoster のデリゲートは呼び出されていませんが、ejabberd で、リクエストが「なし」ではなく「両方」であり、検証が保留中であることがわかります。
XMPPRoster デリゲートが起動しない理由を想像できません...ユーザーが新しいサブスクリプション要求を受信したときに、ejabberd サーバーが適切な通知を送信していないようです...