1

이제는 사용자가 직접 내 오픈 파이어 서버에서 만든 사용자를 볼 수 있습니다.이를 위해 책을 준비하고 있지만 프로그래머가 사용자를 등록하는 방법이 있습니다 openfire와 사용자 서비스 플러그인을 사용하여 http를 통해. 이 기능을 사용하여 새 사용자를 등록하는 방법을 알고 싶습니다. 사용자가 이미 iOS 응용 프로그램과 함께 openfire 서버에 있는지 확인하고 싶습니다. 내 오픈 파이어의 http 링크를 어떻게 등록 할 수 있습니까? 아니면 다른 방법이 있습니까? 나는 사용자 정의 등록을 위해 webservice를 작성하는 것이 좋겠지 만, webservices에 대해서는 거의 알지 못하므로 누구나 도와 주실 수 있습니다. 감사합니다.Openfire에서 사용자 서비스를 사용하여 iOS 용 xmpp 프레임 워크를 통해 새 사용자 등록

답변

2

NSXMLElement를 생성하여 사용자를 등록하고 새 사용자를 등록하려면 xmppstream에 전달해야합니다. 서버에 쿼리를 실행하고 필요한 출력을 얻을 수 있도록 xmppstream 객체가 있는지 확인하십시오.

NSMutableArray *elements = [NSMutableArray array]; 
[elements addObject:[NSXMLElement elementWithName:@"username" stringValue:@"abc"]]; 
[elements addObject:[NSXMLElement elementWithName:@"password" stringValue:@"xyz"]]; 
[elements addObject:[NSXMLElement elementWithName:@"name" stringValue:@"abc"]]; 
[elements addObject:[NSXMLElement elementWithName:@"email" stringValue:@"[email protected]"]]; 
[self.xmppStream registerWithElements:elements error:nil]; 
[self connect]; 

이것은 새 사용자를 등록하거나 사용자가 이미 서버에 존재하면 수신 한 iq에 오류가 발생합니다.

+0

안녕하세요 @ 답변 감사합니다! 나는 이것을 조사 할 것이다! 사용자를 올바르게 등록하려면 어떤 필드가 필수입니까? 그리고 내가 가지고있는 또 다른 질문, 지금 내가 연결하고 openfire 서버에 존재를 줄 수있는, 내가 autofetch 명단을 커밋하지만 그것을 얻지 않을거야, 내가 coredatarosterstorage xmpp 프레임 워크에서 구현을 사용하고, 어떻게 명단이 있는지 확인할 수 있습니다 정확하게 채워 졌습니까? 나는 그 계좌의 친구를 얻지 못하고있다! – jdecuirm

+0

안녕하세요 @ user3741129, 당신은 서버에서 등록 필드를 요청할 수 있습니다. 이것은 등록 필드를 가져 오기위한 XML 쿼리입니다 : NSXMLElement * query = [NSXMLElement elementWithName : @ "query"xmlns : @ "jabber : iq : register"]; NSXMLElement * iq = [NSXML 요소 요소 이름 : @ "iq"]; [iq addAttributeWithName : @ "type"stringValue : @ "get"]]; [iq addAttributeWithName : @ "id"stringValue : @ "admin @ domain/xmppframework"]; [iq addAttributeWithName : @ "to"stringValue : @ "domain"]; [iq addChild : query]; [self.xmppStream sendElement : iq]; – satwal

+0

또한 새 사용자를 만들 때 Openfire 서버를 확인할 수 있습니다. 필수 필드는 *로 표시되지만 코드에서 새 사용자를 등록 할 때 암호 확인을 입력 할 필요가 없습니다. – satwal

0

이 솔루션은 나를 위해 일했습니다. 보다 체계적인 승인

NSString *username = @"[email protected]_SERVER_IP_HERE"; // OR [NSString stringWithFormat:@"%@@%@",username,XMPP_BASE_URL]] 
NSString *password = @"SOME_PASSWORD"; 

AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

del.xmppStream.myJID = [XMPPJID jidWithString:username]; 

NSLog(@"Does supports registration %ub ",); 
NSLog(@"Attempting registration for username %@",del.xmppStream.myJID.bare); 

if (del.xmppStream.supportsInBandRegistration) { 
    NSError *error = nil; 
    if (![del.xmppStream registerWithPassword:password error:&error]) 
    { 
     NSLog(@"Oops, I forgot something: %@", error); 
    }else{ 
     NSLog(@"No Error"); 
    } 
} 

// You will get delegate called after registrations in either success or failure case. These delegates are in XMPPStream class 
// - (void)xmppStreamDidRegister:(XMPPStream *)sender 
//- (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement *)error