2016-10-06 3 views
2

시도한 적이 있지만 마지막 요청 시간은 항상 일정합니다. 실제로 연결된 사용자가 Quick blox로 어떤 작업을 할 때 업데이트해야합니다.
하지만 여전히 동일합니다 (사용자 로그인 전용 시간 제공).

그래서 각 요청에 대해 어떻게 업데이트됩니까?
다음 코드를 시도했습니다.QuickBlox iOS의 온라인/오프라인 문제

[QBACCESS fetchUserDetailsWithID:userID withCompeltionHandler:^(QBUUser *userDetails,BOOL status){ 
    if(status){ 
     QBUUser *user = userDetails; 
     NSInteger currentTimeInterval = [[NSDate date] timeIntervalSince1970]; 
     NSInteger userLastRequestAtTimeInterval = [[user lastRequestAt] timeIntervalSince1970]; 
     // if user didn't do anything last 1 minute (60 seconds) 
     if((currentTimeInterval - userLastRequestAtTimeInterval) > 60){ 
     //means user is offline 
     } 
     else{ 
     //user is online 
     } 
    } 
}]; 

모든 경우에 내 [user lastRequestAt]는 사용자가 로그인 할 때 항상 동일하기 때문에 오프라인으로 표시됩니다.
그래서 실시간 온라인/오프라인을 제공하지 않습니다. 제발 도와주세요

답변

1

많은 연구 끝에 Subscription 상태에 의해서만 QuickBlox를 사용하여 실시간 온라인/오프라인을 얻을 수 있다는 것을 알았습니다.

구독 상태는 4 가지입니다.

  1. QBPresenseSubscriptionStateNone
  2. QBPresenseSubscriptionStateTo
  3. QBPresenseSubscriptionStateFrom
  4. QBPresenseSubscriptionStateBoth

우리가 상대 (기타) 사용자에게 요청을 보낼 필요가 offile 상대 사용자가 자신의 요구 수단에 동의하면, 온라인/실시간 확인을위한 QBPresenseSubscriptionStateBoth, 그러면 둘 다 서로에 대해 알게되고 다음의 델리게이트 메소드가 호출됩니다.

- (void)chatContactListDidChange:(QBContactList *)contactList{ 

} 

- (void)chatDidReceiveContactItemActivity:(NSUInteger)userID 
           isOnline:(BOOL)isOnline 
            status:(NSString *)status{ 

    //here we check offline/online of particular user using ID. 
} 

자세한 내용은 Contact List을 참조하십시오.