2012-01-16 2 views
4

iOS 용 XMPPFramework를 사용 중입니다.XMPPFramework - 반복되는 메시지 받기

내 문제는 내가 방에 들어갔을 때 떠나서 다시 참여하는 것입니다. 그 방의 메시지 또는 그 방의 개인 메시지를 두 번 받았습니다. 나가서 다시 가입하면 3 번받습니다. , 등등.

나는 여러 대리인을 등록하고 제거하지 않을 수도 있다고 들었지만, 만약 내가 그렇게하고 있다면 나는 실수로 그것을하고있어. 그리고 나는 어디에서 이런 일이 일어나고 있는지 정말로 모르겠다. 아무도 이런 일이 일어나는 것을 찾는 데 도움이 될 수 있습니까? 어쩌면 예제가 내 코드에서 그것을 찾는 데 도움이 될 것입니다.

감사합니다.

+0

임 정말이 하나 손실, 어떤 도움을 주시면 감사하겠습니다. – subharb

+0

안녕하세요, David, 그룹 채팅 기능이 필요한 응용 프로그램을 개발 중입니다. 현재 일대일 채팅을 할 수 있습니다. XMPP 클래스를 사용하고 있습니다. 하지만 그룹 채팅도 필요합니다. 나는 그것이 XMPPRoom 클래스를 사용할 것이라는 것을 안다. 하지만 코드를 연습 할 수 없습니다. 고유 한 대화방을 만들고 방에 들어갈 수있는 샘플 코드를 제공해주십시오. 고맙습니다. – Naveen

+0

질문으로 게시하고 링크를 제공 할 수 있습니까? 그 동안 내 코드를 살펴볼 것입니다. – subharb

답변

7

누군가가 알고 싶어하는 경우. remoteTimestamp 값에 문제가

[xmppRoom leaveRoom]; 
    [xmppRoom deactivate]; 
    [xmppRoom removeDelegate:self]; 
0

I 일 :

방을 떠날 수있는 올바른 방법은 함수의 집합을하는 것입니다. 확장/XEP-0045/CoreDataStorage/XMPPRoomCoreDataStorage.m

전에 :

- (BOOL)existsMessage:(XMPPMessage *)message forRoom:(XMPPRoom *)room stream:(XMPPStream *)xmppStream 
{ 
    NSDate *remoteTimestamp = [message delayedDeliveryDate]; 

    if (remoteTimestamp == nil) 
    { 
    return NO; 
    } 

    NSManagedObjectContext *moc = [self managedObjectContext]; 
    ...... 
} 

후 : 내가 파일에 추가 해결 방법으로 문제를 해결

- (BOOL)existsMessage:(XMPPMessage *)message forRoom:(XMPPRoom *)room stream:(XMPPStream *)xmppStream 
{ 
    NSDate *remoteTimestamp = [message delayedDeliveryDate]; 

    if (remoteTimestamp == nil) 
    { 
      return NO; 
    } 

    remoteTimestamp = nil; 
    NSManagedObjectContext *moc = [self managedObjectContext]; 
    ...... 
}