IOS XMPP cannot send messages

I am working on an XMPP based ios project. I am tring to send a message, but I can not send a message. means the receiver will not receive the message. here is my code.

- (IBAction)sendMessageNow:(id)sender { NSString *messageStr =messageField.text; if([messageStr length] > 0) { NSLog(@"Message sending fron Gmail"); NSXMLElement *body = [NSXMLElement elementWithName:@"body"]; [body setStringValue:messageStr]; NSXMLElement *message = [NSXMLElement elementWithName:@"message"]; [message addAttributeWithName:@"type" stringValue:@"chat"]; [message addAttributeWithName:@"to" stringValue:@"destination address"]; [message addChild:body]; NSLog(@"message1%@",message); [[self appDelegate].xmppStream sendElement:message]; } NSDate *date = [NSDate date]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"hh:mm a"]; //[self sendMessage]; if ([self.messageField.text length]>0) { if (isfromMe) { NSString *rowNum=[NSString stringWithFormat:@"%d",(int)sphBubbledata.count]; [self adddMediaBubbledata:kTextByme mediaPath:self.messageField.text mtime:[formatter stringFromDate:date] thumb:@"" downloadstatus:@"" sendingStatus:kSending msg_ID:[self genRandStringLength:7]]; [self performSelector:@selector(messageSent:) withObject:rowNum afterDelay:1]; isfromMe=NO; } else { [self adddMediaBubbledata:kTextByOther mediaPath:self.messageField.text mtime:[formatter stringFromDate:date] thumb:@"" downloadstatus:@"" sendingStatus:kSent msg_ID:[self genRandStringLength:7]]; isfromMe=YES; } self.messageField.text=@ ""; [self.chattable reloadData]; [self scrollTableview]; } } 

and here is my senderdidreceivemessage method from appdelegate.m

 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message { DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD); [[self xmppStream] sendElement:message]; UILocalNotification *localNotification = [[UILocalNotification alloc] init]; localNotification.alertAction = @"OK"; localNotification.fireDate = [NSDate date]; // localNotification.alertBody = xmppmessage; localNotification.soundName = UILocalNotificationDefaultSoundName; [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification]; // A simple example of inbound message handling. if ([message isChatMessageWithBody]) { XMPPUserCoreDataStorageObject *user = [xmppRosterStorage userForJID:[message from] xmppStream:xmppStream managedObjectContext:[self managedObjectContext_roster]]; NSString *body = [[message elementForName:@"body"] stringValue]; NSString *displayName = [user displayName]; if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:displayName message:body delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alertView show]; } else { // We are not active, so use a local notification instead UILocalNotification *localNotification = [[UILocalNotification alloc] init]; localNotification.alertAction = @"Ok"; localNotification.alertBody = [NSString stringWithFormat:@"From: %@\n\n%@",displayName,body]; [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification]; } } } 

EDIT

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *L_CellIdentifier = @"SPHTextBubbleCell"; static NSString *R_CellIdentifier = @"SPHMediaBubbleCell"; SPH_PARAM_List *feed_data=[[SPH_PARAM_List alloc]init]; feed_data=[sphBubbledata objectAtIndex:indexPath.row]; if ([feed_data.chat_media_type isEqualToString:kTextByme]||[feed_data.chat_media_type isEqualToString:kTextByOther]) { SPHTextBubbleCell *cell = (SPHTextBubbleCell *) [tableView dequeueReusableCellWithIdentifier:L_CellIdentifier]; if (cell == nil) { cell = [[SPHTextBubbleCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:L_CellIdentifier]; } XMPPUserCoreDataStorageObject *user = [[self fetchedResultsController] objectAtIndexPath:indexPath]; //cell.textLabel.text = user.displayName; //[self configurePhotoForCell:cell user:user]; cell.bubbletype=([feed_data.chat_media_type isEqualToString:kTextByme]) ?@ "LEFT":@"RIGHT"; cell.textLabel.text = user.displayName; cell.textLabel.tag=indexPath.row; cell.timestampLabel.text = @"02:20 AM"; cell.CustomDelegate=self; cell.AvatarImageView.image=([feed_data.chat_media_type isEqualToString:kTextByme])?[UIImage imageNamed:@"ProfilePic"]:[UIImage imageNamed:@"person"]; // cell.AvatarImageView.image=[ [self configurePhotoForCell:cell user:user] ; return cell; } SPHMediaBubbleCell *cell = (SPHMediaBubbleCell *) [tableView dequeueReusableCellWithIdentifier:R_CellIdentifier]; if (cell == nil) { cell = [[SPHMediaBubbleCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:R_CellIdentifier]; } cell.bubbletype=([feed_data.chat_media_type isEqualToString:kImagebyme]) ?@ "LEFT":@"RIGHT"; cell.textLabel.text = feed_data.chat_message; cell.messageImageView.tag=indexPath.row; cell.CustomDelegate=self; cell.timestampLabel.text = @"02:20 AM"; cell.AvatarImageView.image=([feed_data.chat_media_type isEqualToString:kImagebyme])?[UIImage imageNamed:@"ProfilePic"]:[UIImage imageNamed:@"person"]; return cell; } 

and set up the photography method

 - (void)configurePhotoForCell:(UITableViewCell *)cell user:(XMPPUserCoreDataStorageObject *)user { // Our xmppRosterStorage will cache photos as they arrive from the xmppvCardAvatarModule. // We only need to ask the avatar module for a photo, if the roster doesn't have it. if (user.photo != nil) { cell.imageView.image = user.photo; } else { NSData *photoData = [[[self appDelegate] xmppvCardAvatarModule] photoDataForJID:user.jid]; if (photoData != nil) cell.imageView.image = [UIImage imageWithData:photoData]; else cell.imageView.image = [UIImage imageNamed:@"user2"]; } } 

EDIT

Both are sent by me, but it looks in the same window when I press the send button on time, it is displayed in the sender's message and looks a second time in the receiver's message. and the receiver will not receive the message.

Error

EDIT

Here is the answer after clicking the submit button.

: - [ChathistryViewController sendMessageNow:] line: 414 contents: sending messages fron Gmail function: - [ChathistryViewController sendMessageNow:] line: 421 content: message1ghfhxfghh 2015-06-12 13: 03: 22: 071 project name [7556: 2f03] SEND : ghfhxfghh 2015-06-12 13: 03: 22: 389 projectname [7556: 7347] RECV: ghfhxfghh 2015-06-12 13: 03: 22: 390 CloseChat [7556: 2f03] SEND: ghfhxfghh 2015-06-12 13 : 03: 22.393 projectname [7556: 49110] Attempt to schedule local notification {fire date = (null), time zone = (null), repeat interval = 0, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = Friday, June 12, 2015 at 1:03:22 PM India Standard Time, User Information = (null)} with sound, but we didn’t get permission from the user to play sounds 2015-06-12 13: 03: 22: 697 CloseChat [7556: 7347] RECV: 2015-06-12 13: 03: 23: 004 project name [7556: 7347] SEND: 2015- 06-12 13: 03: 23: 004 project name [7556: 7347] SEND: http://etherx.jabber.org/streams' version = '1.0' to = 'jwchat.org'> 2015-06-12 13 : 03: 23: 619 projectname [7556: 7347] RECV: 2015-06-12 13: 03: 23: 619 projectname [7556: 7347] RECV: 2015-06-12 13: 03: 23: 619 CloseChat [7556: 7347] SEND: 2015-06-12 13: 03: 23: 925 projectname [7556: 7347] RECV: 2015-06-12 13: 03: 23: 926 projectname [7556: 7347] SEND: http: // etherx. jabber.org/streams' version = '1.0' to = 'jwchat.org'> 2015-06-12 13: 03: 25: 063 project name [7556: 7627] RECV: 2015-06-12 13: 03: 25 : 064 project name [7556: 7347] RECV: PLAINDIGEST-MD5SCRAM-SHA-1 2015-06 -12 13: 03: 25: 065 CloseChat [7556: 607] SEND: biwsbj1jaGlyYWcscj1EMjUxMEQ2NC05MzZFLTQxMkUtQjY1Ri0zM0VFQjE1ODcxRjc = 2015-06-12 13: 03: 25: 306 project name [7556: 7347] RECV: cj1EMjUxMEQ2NC05MzZFLTQxMkUtQjY1Ri0zM0VFQjE1ODcxRjdXVnB5eEp3b2lCRC9rUThvRkdhbGdRPT0scz1DZVZpSFFXNW9XRDVVNU90WUNMWExnPT0saT00MDk2 2015-06-12 13: 03: 25: 321 project name [7556: 7347] Send: Yz1iaXdzLHI9RDI1MTBENjQtOTM2RS00MTJFLUI2NUYtMzNFRUIxNTg3MUY3V1ZweXhKd29pQkQva1E4b0ZHYWxnUT09LHA9TWlsaW5TczI4b2VBd1dtQ3pWY21TWXZQWEFnPQ == 2015-06-12 13: 03: 25: 562 project name [7556: 7627] RECV: dj1WeVdSaWRTTHVxYzhkV0E2aEg3OW9mU0FpYmc9 2015-06-12 13: 03: 25: 562 projectname [7556: 7627] SEND: http://etherx.jabber.org/streams' version = '1.0' to = 'jwchat.org'> 2015-06-12 13: 03: 25: 871 project name [7556: 7627 ] RECV: 2015-06-12 13: 03: 25: 871 project name [7556: 7627] RECV: 2015-06-12 13: 03: 25: 872 project name [7556: 7627] TPRAVIT: 12/06/2015 13: 03: 26: 178 projectname [7556: 7347] RECV: chirag@jwchat.org / 341204969114349440629043 06/12/2015 13: 03: 26: 179 projectname [7556: 7347] Send: 2015- 06-12 13: 03: 26: 485 project name [7556: 7347] RECV: 2015-06-12 13: 03: 26: 486 projectname [7556: 7627] SEND: 2015-06-12 13: 03: 26: 487 projectname [7556: 7347] SEND: 2015-06-12 13: 03: 26: 488 project name [7556: 7627] SEND: 2015-06-12 13: 03: 26: 714 project name [7556: 7347] RECV : 2015-06-12 13: 03: 26: 946 projectname [7556: 7347] RECV: 2015-06-12 13: 03: 26: 947 project name [7556: 6e13] SEND: 2015-06-12 13: 03 : 26: 948 project name [7556: 6e13] RECV: 2015-06-12 13: 03: 27: 180 projectname [7556: 7627] RECV:

+5
source share
3 answers

First, make sure that the XMMP client is configured differently. Then make sure that you are sending the message and that you have the correct sender.

For those who now say that this is a comment, not an answer, I do not have enough reputation for comment!

+4
source

The control is for UI purposes only, I never wrote code to send or receive a message from the server, because I'm not sure whether the user will use a third-party SDK or XMPP or the usual REST API.

So, you make the server part and the user interface part separately.

Your question: Both are sent by me, but it looks in the same window, when I press the send button at the same time, it is displayed in the sender's message and looks a second time in the receiver's message. and the receiver will not receive the message.

Ans: Yes, I did this for a demo purpose, based on the answer you get from the server, you need to make changes to the code.

How to use: 1.Declare NsmutableArray and initialize it to Viewdidload. 2. When you send a message, image, create Bubbledata and add it to the array, and then reload Tableview.

  [self adddMediaBubbledata:kTextByme mediaPath:@"Hi, check this new control!" mtime:@"8:30 AM" thumb:@"NA" downloadstatus:@"" sendingStatus:kSent msg_ID:@"AB4353GH"]; 

Use the types below to send and receive:

  kTextByme: if you sending a text kImageByme : if you are sending an Image kTextByOther : if you receiving an Text kImageByOther : if you are receiving an Image 

Now update the sending status

  kSent : you successfully sent an message kFailed : message sendig failed kSending : your message is sending to server 

So, based on the information above, make changes and let me know if you need other help.

+1
source

Please find the delegate below in the XMPP Client (XMMPFramework), it will process the instant messages you received.

// XMPP delegation method: xmpp client receives a message

 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message { // some computation stuff return ; } 
0
source

All Articles