2011-02-28 4 views

Répondre

10

Télécharger XMPPFramework et décompressez-le. Il y a plusieurs dossiers à l'intérieur. Ouvrez le dossier 'Xcode'> ouvrez le dossier 'iPhoneXMPP'> cliquez sur 'iPhoneXMPP.xcodeproj'> exécutez-le. Il demande d'abord les informations d'identification. Après une connexion réussie, il affichera votre liste de contacts. Cela fonctionne bien pour Gmail. Il y a un rappel méthode qui est appelée pour chaque message entrant:

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message 
{ 
    user = [xmppRosterStorage userForJID:[message from] xmppStream:sender  managedObjectContext:[self managedObjectContext_roster]]; 

    if ([message isChatMessageWithBody]) 
    { 
     NSString *body = [[message elementForName:@"body"] stringValue]; 
    NSString *from = [[message attributeForName:@"from"] stringValue]; 
     NSMutableDictionary *m = [[NSMutableDictionary alloc] init]; 
     [m setObject:body forKey:@"msg"]; 
     [m setObject:from forKey:@"sender"]; 

     if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive) 
     {   
      NSLog(@"Applications are in active state"); 
      //send the above dictionary where ever you want 
     } 
     else 
     { 
      NSLog(@"Applications are in Inactive state"); 
      UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
      localNotification.alertAction = @"Ok"; 
      localNotification.applicationIconBadgeNumber=count; 
      localNotification.alertBody =[NSString stringWithFormat:@"From:"%@\n\n%@",from,body]; 
      [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification]; 
      //send the above dictionary where ever you want 
     } 
    } 
} 

Pour l'envoi de messages, nous devons écrire notre propre méthode où vous voulez:

-(void)sendMessage 
{ 
    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].xmppSream sendElement:message]; 
    }  
} 
1

Si vous envoyez un message à partir Room/Group Ensuite, utilisez ce code pour envoyer des messages.

[xmppRoom sendMessage:@"Hi All"]; 

Vous n'avez pas besoin d'envoyer les messages via xmppStream. Cette ligne de code unique fonctionne parfaitement pour moi.

+1

'@" Hi All "' existe en tant que "NSString" et non "XMPPMessage". Incompatible pour l'entrée dans la méthode 'sendMessage'. Vous recevrez cette erreur: Types de pointeurs incompatibles envoyant 'NSString *' au paramètre de type 'XMPPMessage *' –

+1

Salut Keith OYS, Désolé, je ne sais pas quelle bibliothèque XMPP vous utilisez, mais j'ai vérifié cela sous classe XMPPRoom. Son - (void) sendMessage: (NSString *) msg; J'ai utilisé le même. Faites-moi savoir si j'ai tort. –

+1

Le dernier XMPPFramework utilise le message '- (void) sendMessage: (XMPPMessage *);' dans la classe 'XMPPRoom'. En tant que tel, vous devez d'abord initialiser un 'XMPPMessage'. –

2

pour l'envoi du message dans les groupes/Chambre ci-dessous est l'extrait

XMPPMessage *message = [XMPPMessage message]; 
[message addBody:@"123"]; 
[self.currentRoom sendMessage:message1]; 

Where self.currentRoom is XMPPRoom 
0

Voici une solution pour envoyer un message via XMPPFramework à Swift 3

let user = XMPPJID(string: "[email protected]") 
let msg = XMPPMessage(type: "chat", to: user) 
msg?.addBody("Message to send") 
self.xmppStream.send(msg) 
Questions connexes