Теперь я вижу пользователей, созданных вручную на моем сервере openfire, я работаю с книгой, чтобы добиться этого, но есть способ, которым программист регистрирует пользователя через http, используя openfire и плагин пользовательского сервиса. Я хочу знать, как зарегистрировать нового пользователя с помощью этой функции и могу ли я проверить, существует ли уже пользователь на сервере openfire с моим приложением для iOS. Как я могу получить http-ссылку моего openfire для регистрации или есть другой способ? я читал, что для пользовательской регистрации было бы хорошо создать веб-сервис, но я очень мало знаю о веб-сервисах, поэтому, пожалуйста, кто-нибудь может помочь, спасибо.
Используйте службу пользователей в Openfire для регистрации нового пользователя через платформу xmpp для iOS
Ответы (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.
person
satwal
schedule
25.06.2014
Привет @skaur спасибо за ответ! я проверю это! какие поля являются обязательными для корректной регистрации пользователя? И еще один вопрос, который у меня есть, теперь я могу подключиться к серверу openfire и указать присутствие, я фиксирую список autofetch, но я его не получаю, я использую coredatarosterstorage, реализованный в структуре xmpp, как я могу проверить, является ли список правильно заселены? я не получаю друзей аккаунта!
- person jdecuirm; 26.06.2014
Привет, @user3741129, вы можете запросить поля регистрации с вашего сервера. Это XML-запрос для получения полей регистрации: iq type='get' id='reg1' to='shakespeare.lit'›‹query xmlns=' jabber:iq:register'/›‹/iq› NSXMLElement *query = [NSXMLElement elementWithName:@query xmlns:@jabber:iq:register]; NSXMLElement *iq = [NSXMLElement elementWithName:@iq]; [iq addAttributeWithName:@type stringValue:@get]; [iq addAttributeWithName:@id stringValue:@admin@domain/xmppframework]; [iq addAttributeWithName:@to stringValue:@domain]; [iq addChild:запрос]; [self.xmppStream sendElement:iq];
- person satwal; 27.06.2014
также вы можете проверить свой сервер openfire при создании нового пользователя, обязательные поля отмечены *, но вам не нужно вводить пароль для подтверждения при регистрации нового пользователя из кода.
- person satwal; 27.06.2014
Это решение РАБОТАЛО для меня. Более организованный подход
NSString *username = @"rohit@XMPP_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
person
Rohit Mandiwal
schedule
03.10.2014