iOS中的QuickBlox在线/离线问题

时间:2016-10-06 11:17:59

标签: ios quickblox

我已尝试过QuickBlox文档方法,但上次请求时间一直是常量,实际上应该在连接用户使用Quick blox进行任何活动时进行更新,例如与某人聊天。
但是,它保持不变。(它给出了用户只能登录的时间)。

那么如何更新每个请求?
我尝试了以下代码。< / p>

[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 个答案:

答案 0 :(得分:1)

经过大量研究,我发现只有通过订阅状态,我们才能使用QuickBlox实现在线/离线实时。

有四个订阅状态。

  1. QBPresenseSubscriptionStateNone
  2. QBPresenseSubscriptionStateTo
  3. QBPresenseSubscriptionStateFrom
  4. QBPresenseSubscriptionStateBoth
  5. 为了检查实时在线/离线,我们需要向对手(其他)用户发送请求,如果对手用户接受他们的请求意味着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