2014-04-08 7 views

답변

2

iOS XMPP 프레임 워크에 대해 이야기하고 있다고 가정합니다. 그렇지 않은 경우이 대답을 무시하십시오. 당신은 이런 식으로 다른 사용자에게 지시 존재를 보낼 수 있습니다 _xmppStream가 개방되고 연결 XMPPStream입니다

XMPPPresence *presence = [[XMPPPresence alloc] initWithType:@"probe" to:someJid]; 
[_xmppStream sendElement:presence]; 

.

그러나 대부분의 XMPP 서버는 다른 사용자가 사용자 명단에없는 경우 이러한 유형의 지정 존재에 대한 응답을 허용하지 않습니다. 자신의 XMPP 서버를 관리하는 경우이 유형의 작업을 허용하도록 서버를 수정할 수 있습니다.

+0

좋아, 고맙습니다. –

0
당신은 플러그인 URL을 다음의 호출하여 모든 사용자의 존재를 요청할 수

에 http : // {SERVER_NAME} : 9090/플러그인/존재/상태 JID = 사용자 ID @의 SERVER_NAME & 유형 = 텍스트

EX :

[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://SERVER_NAME:9090/plugins/presence/[email protected]_NAME&type=text"]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 

      if(connectionError==nil) 
       NSLog(@"plugins response ===%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); 

     }]; 

오프라인 사용자를 위해 "온라인"foractive 사용자와 "소매치기"를 반환합니다. 이미지에 표시된 openfire 서버의 서버 설정에주의하십시오.enter image description here

+0

내가 오프라인 일 때 사용자에게 "사용할 수 없음"이 표시되었지만 은 해당 사용자가 온라인 상태가되면 "null"이됩니다. –

+0

그럴리 없어. 내 코드에서 다시 한 번 확인해 보자. – cjd

+0

내 코드로 테스트 한 결과 제대로 작동하는 것 같습니다. servername을 확인하고 먼저 브라우저에서 http : // {SERVER_NAME} : 9090/plugins/presence/status? jid = USERID @ SERVER_NAME & type = text를 실행하여 확인하십시오. – cjd