私はiPhone用のxmppクライアントを開発しています。メッセージを送受信できます。ユーザーにプロンプトを表示せずに、バディリクエストを自動的に受け入れたい。どの機能でリクエストを受け取りますか。ヒントを教えてください。
前もって感謝します。
私はiPhone用のxmppクライアントを開発しています。メッセージを送受信できます。ユーザーにプロンプトを表示せずに、バディリクエストを自動的に受け入れたい。どの機能でリクエストを受け取りますか。ヒントを教えてください。
前もって感謝します。
わかりました、私はあなたに完璧な答えを持っています!
コードは次のとおりです。
- (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」からユーザー名を取得できます。
これ以上理解が必要な場合は、blueobaid@gmail.com にメールしてください。私の回答に返信してもアラートが届かないためです。ただし、他の人にも役立つように、ここに戻って返信します。すぐにhttp://Czartechnogeeks.com/iSolutionsにチュートリアルを掲載する予定です。
ユーザーにとって価値のあるものをstackoverflowで共有できて、とても助かりました。
別の関数でリクエストを受け取ることはありません。バディがオンラインになるか、リクエストを送信するたびに、didReceivePresence デリゲート関数が呼び出されます。プレゼンス タイプ = サブスクリプションを取得した場合、それはバディ リクエストです。これがお役に立てば幸いです。
関数didReceivePresenceでサブスクリプションを受け取ります。
サブスクリプションを受け入れるには、次のコードを使用できます。
NSXMLElement *presence = [NSXMLElement elementWithName:@"presence"];
[presence addAttributeWithName:@"type" stringValue:@"subscribed"];
[presence addAttributeWithName:@"to" stringValue:[presence fromStr]];
[presence addAttributeWithName:@"from" stringValue:@"you@host"];
[[self xmppStream] sendElement:presence];
役に立ちますように:)