User Presence

Learn how to track user presence updates and check user status using ping.

Before you begin

  1. Register a QuickBlox account. This is a matter of a few minutes and you will be able to use this account to build your apps.
  2. Configure QuickBlox SDK for your app. Check out our Setup page for more details.
  3. Create a user session to be able to use QuickBlox functionality. See our Authentication page to learn how to do it.
  4. Connect to the Chat server. See our Connection page to learn how to do it.

Visit our Key Concepts page to get an overall understanding of the most important QuickBlox concepts.

Subscribe to contact presence updates

You can track the contact presence updates in real-time using the chatDidReceiveContactItemActivity(_ userID:isOnline:status:) method of the QBChatDelegate. However, you can track the presence updates of only those users who have been added to the contact list. See this section to learn how to implement the Contact List.

//MARK: - Life Cycle
override func viewDidLoad() {
    super.viewDidLoad()
    
    QBChat.instance.addDelegate(self)
}

//MARK: QBChatDelegate
func chatDidReceiveContactItemActivity(_ userID: UInt, isOnline: Bool, status: String?) {
    
}
//MARK: - Life Cycle
- (void)viewDidLoad {
    [super viewDidLoad];
    
    [QBChat.instance addDelegate:self];
}

//MARK: QBChatDelegate
- (void)chatDidReceiveContactItemActivity:(NSUInteger)userID isOnline:(BOOL)isOnline status:(NSString *)status {
    
}

Ping user

QuickBlox SDK can send application-level pings to a user. As a result, you can check if the user is connected to the Chat server.

let userId = 221809
let timeout = 20.0
QBChat.instance.pingUser(withID: userId, timeout: timeout) { (timeInterval, success) in
    // time interval of ping and whether it was successful
}
NSUInteger userId = 221809;
NSTimeInterval timeout = 20.0;
[QBChat.instance pingUserWithID:userId timeout:timeout completion:^(NSTimeInterval timeInterval, BOOL success) {
    // time interval of ping and whether it was successful
}];
ArgumentRequiredDescription
userIdyesID of the user.
timeoutnoPing timeout. To control how much time it takes to respond to a ping, you should set a ping timeout. If the response isn't received within the specified time frame, then the error callback is called. Default: 30 seconds.

As a result, a completion block with timeInterval and success arguments is called.

ArgumentDescription
timeIntervalA double parameter. Indicates how long it took to ping in seconds.
successA boolean parameter. Indicates whether the ping was successful. If the sucess=1, the ping is successful (the user is connected to the Chat). If sucess=0, the ping isn't successful.

Ping server

QuickBlox SDK can send application-level pings to a server. As a result, you can check if there is a connection with the Chat server.

let timeout = 20.0
QBChat.instance.pingServer(withTimeout: timeout) { (timeInterval, success) in
    // time interval of ping and whether it was successful
}
NSTimeInterval timeout = 20.0;
[QBChat.instance pingServerWithTimeout:timeout completion:^(NSTimeInterval timeInterval, BOOL success) {
    // time interval of ping and whether it was successful
}];
ArgumentRequiredDescription
timeoutnoPing timeout. To control how much time it takes to respond to a ping, you should set a ping timeout. If the response wasn't received within the specified time frame, then the error callback is called. Default: 30 seconds.

As a result, a completion block with timeInterval and success arguments is called.

ArgumentDescription
timeIntervalA double parameter. Indicates how long it took to ping in seconds.
successA boolean parameter. Indicates whether the ping was successful. If the sucess=1, the ping was successful. If sucess=0, the ping wasn't successful.

What’s Next