2016-07-12 19 views
1

Ich habe zwei Geräte mit der gleichen Benutzer-ID und Passwort angemeldet, so wenn Zielgerät Stimme oder Bild an Client senden. Das Gerät erhält die Zielnachricht, aber ein anderes Gerät nicht die Zielnachricht erhalten. weil die Ressourcen-ID beim Anmelden auf zwei Geräten geändert wird. Seine Darstellung Fehlermeldung 503()XMPP-Ressource-ID bekommen Änderung während der Anmeldung mehr als ein Gerät

(NSString *)full 
{ 
    if (user) 
    { 
    if (resource) 
    { 
     //----- here i am getting the resource ID ------- 
     [[NSUserDefaults standardUserDefaults]setObject:resource forKey:@"GETRESOURCE"]; 
     [[NSUserDefaults standardUserDefaults]synchronize]; 

     return [NSString stringWithFormat:@"%@@%@/%@", user, domain, resource]; 
    } 
    else 
    { 
     return [NSString stringWithFormat:@"%@@%@", user, domain]; 
    } 
    } else { 
    if (resource) 
     return [NSString stringWithFormat:@"%@/%@", domain, resource]; 
    else 
     return domain; 
    } 
} 



(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    CGFloat maxCompression = 0.1f; 

    NSData *imageData = UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], maxCompression); 
[messageType addObject:@"1"]; 

    //---- now implementing the resource id here i getting 503 Error---- 
    NSString *resourceStr = [[NSUserDefaults standardUserDefaults] valueForKey:@"GETRESOURCE"]; 

    XMPPJID *jid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@/%@", receiver, resourceStr]]; 

    [fileTransfer initiateFileTransferTo:jid withData:imageData]; 

    self.willSendImage = [UIImage imageWithData:imageData]; 
    [messageArray addObject:[NSDictionary dictionaryWithObject:self.willSendImage forKey:@"image"]]; 
    [self.timestamps addObject:[NSDate date]]; 

    NSDate *currDate = [NSDate date]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
    [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss Z"]; 
    NSString *dateString = [dateFormatter stringFromDate:currDate]; 

    [dbHandler insertChatHistory:@"image" imageData:imageData receiveType:2 mediaType:2 receiverName:titleName date:dateString]; 

    [self finishSend]; 
    [JSMessageSoundEffect playMessageSentSound]; 
    [self scrollToBottomAnimated:YES]; 
    [self reloadMessages]; 

    [self dismissViewControllerAnimated:YES completion:NULL]; 

} 
+1

Dieser Beitrag enthält keine einzige Frage. Bitte aktualisieren Sie Ihren Beitrag. XMPP Resourceparts sind für jede Verbindung/jedes Gerät einzigartig. – Flow

+0

Ändern der Ressource ist das erwartete Verhalten. Abhängig von Ihrer XMPP-Konfiguration können Sie das Routing so konfigurieren, dass Pachets an jede Ressource für eine bestimmte Zieladresse gesendet werden (z. B. Openfire hat eine solche Konfigurationsmöglichkeit) – Antoniossss

Antwort

2

// --- Ich werde das Bild als STRING SENDEN FORMTE FOR ME ITS ARBEITETE

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 



    CGFloat maxCompression = 0.1f; 

    UIImage * getimage =[self imageWithImage:[info objectForKey:UIImagePickerControllerOriginalImage]]; 
    NSData *imageData = UIImageJPEGRepresentation(getimage, maxCompression); 

    NSDate *currDate = [NSDate date]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
    [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss Z"]; 
    NSString *dateString = [dateFormatter stringFromDate:currDate]; 


    //--- convert image to string ----- 

    NSString* imageString = [imageData base64EncodedStringWithOptions:0]; 
    //---- new change -- 

    imageString = [imageString stringByAppendingString:@".IMAGE"]; 

    //------------- 

    if ([imageString length] > 0) 
    { 
     [dbHandler insertChatHistory:imageString imageData:nil receiveType:2 mediaType:1 receiverName:titleName date:dateString]; 

     NSXMLElement *body = [NSXMLElement elementWithName:@"body"]; 
     [body setStringValue:imageString]; 

     NSXMLElement *message = [NSXMLElement elementWithName:@"message"]; 
     [message addAttributeWithName:@"type" stringValue:@"chat"]; 
     [message addAttributeWithName:@"to" stringValue:receiver]; //--- jenish --- 
     [message addChild:body]; 
     [self.xmppStream sendElement:message]; 

     [messageType addObject:@"1"]; 
     [messageArray addObject:[NSDictionary dictionaryWithObject:imageString forKey:@"Text"]]; 
     [self.timestamps addObject:[NSDate date]]; 

    } 

    [self finishSend]; 
    [JSMessageSoundEffect playMessageSentSound]; 
    [self scrollToBottomAnimated:YES]; 
    [self reloadMessages]; 

    [self dismissViewControllerAnimated:YES completion:NULL]; 

}