1
votes

I am new in iOS development and try to connect my iPhone device with the ejabberd server.I follow Xmpp.org document.And also I follow this "http://code.tutsplus.com/tutorials/building-a-jabber-client-for-ios-interface-setup--mobile-7188" document thoroughly.This is a great tutorial.This help me a lot a to setup a ejabberd server in my mac and able to connect to two different application(iMessage and Adium) through ejabberd server but I am facing some problem when I started iPhone application.

First I got XMPP importing error.but I solve it, after that app crash when I use [XMPPStream addDelegate: self delegateQueue:dispatch_get_main_queue() ] method.That time Compiler says "unrecognized selector sent".so I change it to [XMPPStream addDelegate:self ].Error removed.

And at last I got alert message which told me"Can't connect to server",and finally unable to connect to the server. I want to test client-server connection locally,so I changed server address with my Mac Ip.but still unable to connect. please help me....If possible please suggest me how to proceed further & any other document on XMPP. Thanks a lot.

I call this connect function when application start.

- (BOOL)connect {

    [self setupStream];

    NSString *jabberID = [[NSUserDefaults standardUserDefaults]stringForKey:@"userID"];

    NSString *myPassword =[[NSUserDefaults standardUserDefaults] stringForKey:@"userPassword"];

    if (![xmppStream isDisconnected]) {

        return YES;
    }

    if (jabberID == nil || myPassword == nil) {

        return NO;
    }

    [xmppStream setMyJID:[XMPPJID jidWithString:jabberID]];

    password = myPassword;
    NSError *error = nil;

    if (![xmppStream connect:&error]){

        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"Can't connect to server %@", [error localizedDescription]] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

        [alertView show];
        [alertView release];

        return NO;
    }
    return YES;
}

- (void)setupStream {

    xmppStream = [[[XMPPStream alloc] init] autorelease];
    [xmppStream addDelegate:self];
    //[xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
}

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

    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, @"MYSERVER"]];

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

            [_chatDelegate buddyWentOffline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, @"MYSERVER"]];
        }
    }
}
1
Are you signing up with full JID or not?Jagveer Singh Rajput
yes sir,I am signing up with full JID.Is there any other way to connect iPhohe with xmpp server.Moumita
Have u tried login with same JID and password from another clients like pidgin?Jagveer Singh Rajput

1 Answers

-1
votes

in the connect method try using these two lines also, if u are using ejabberd as mentioned in the tutorial

xmppStream.hostName = @"localhost";
xmppStream.hostPort=5222;

i was following the same tutorial and it worked for me after adding these lines..put breakpoints in the

- (void)xmppStreamDidConnect:(XMPPStream *)sender

delegate method to check if its connecting