2012-03-14 8 views
3

iphone用のxmppクライアントを開発中です。私はメッセージを送受信できます。私はユーザーに尋ねることなくバディリクエストを自動的に受け入れたいと思っています。どの機能でリクエストを受け取りますか?私に何かヒントを与えてください。xmppクライアントでバディリクエストを受け入れるiphone

ありがとうございます。

答えて

7

申し訳ありませんが、私はあなたに完璧な答えを持っています!

- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence { 

    // a buddy went offline/online 

    NSString *presenceType = [presence type];   // online/offline 
    NSString *myUsername = [[sender myJID] user]; 
    NSString *presenceFromUser = [[presence from] user]; 

    if (![presenceFromUser isEqualToString:myUsername]) { 

     if ([presenceType isEqualToString:@"available"]) { 

      [_chatDelegate newBuddyOnline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, kHostName]]; 
       NSLog(@"presence user is %@",presenceFromUser); 

     } 

     else if ([presenceType isEqualToString:@"unavailable"]) { 

      [_chatDelegate buddyWentOffline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, kHostName]]; 
      NSLog(@"presence user is invisible %@",presenceFromUser); 

     } 
     else if ([presenceType isEqualToString:@"subscribe"]) { 

      [_chatDelegate newBuddyOnline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, kHostName]]; 
         NSLog(@"presence user wants to subscribe %@",presenceFromUser); 

     } 

    } 
} 

私はあなたのより良い理解のためDidReceivePresence方法の完全なコードをご提供しています。ここ

はコードです。

ここでコードを説明しましょう。 else if条件に気がついたら、私が受け取っている値(要素)を比較しています。だから私が購読(ユーザーが友人要求を送信するとき)として文字列を取得するときは、その特定のユーザーをあなたのテーブルビューのバディリストに追加する必要があります。

「presenceFromUser」からユーザー名を取得できます。

これ以上理解が必要な場合は、私の返事に返信する際にアラートが表示されないため、私にメールを送ってください。返信して返信します。私はすぐにチュートリアルを入れようとしていますhttp://Czartechnogeeks.com/iSolutions

私は多大な助けをした後で、ユーザーにとって貴重なものをstackoverflowと共有できることをうれしく思っています。

+2

サブスクリプションを受け入れるか拒否することができますどのようにあなたはあなたが一緒にバディ名を受け取ります –

+0

私に言うことができるかもしれそれでは、受け入れまたは却下を処理して、didSendPresenceメソッド – obaid

+0

で、その特定のユーザにpresenceTypeコマンドを送信してください。こんにちは。コードをありがとう。ここで '_chatDelegate'をクリアしてください。そして、私はどのようにして友人の要求を受け入れて受け入れられますか –

4

Uは別の機能でリクエストを受信しません。バディがオンラインになったりリクエストを送信したりするたびに、didReceivePresenceデリゲート関数が呼び出されます。プレゼンスタイプ=サブスクリプションを取得すると、それはbuddyrequestです。これがあなたを助けることを願ってください。

2

サブスクリプションは、でした.ReceivePresenceです。

サブスクリプションを受け入れるには、このコードを使用することができますが:

NSXMLElement *presence = [NSXMLElement elementWithName:@"presence"]; 
    [presence addAttributeWithName:@"type" stringValue:@"subscribed"]; 
    [presence addAttributeWithName:@"to" stringValue:[presence fromStr]]; 
    [presence addAttributeWithName:@"from" stringValue:@"[email protected]"]; 
    [[self xmppStream] sendElement:presence]; 

はそれが役立ちます:)

+0

私はサブスクリプションを受け入れようとしていますが、それは動作しません... –

+0

あなたは何を受け取っていますか? – obaid

関連する問題