Quickblox 用户在线状态 IOS

Posted

技术标签:

【中文标题】Quickblox 用户在线状态 IOS【英文标题】:Quickblox User online status IOS 【发布时间】:2015-09-03 05:00:39 【问题描述】:

我一直在为 ios 使用 quickblox sdk,我有一个关于用户在线状态的查询。

下面是推荐的代码。

QBUUser *user = ...;

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)
 
 // user is offline now

但我的疑问是我是否需要在计时器事件中检查这一点,因为每 5-10 秒我想知道用户是否在线或有其他更好的方法?

【问题讨论】:

【参考方案1】:

Kudi,找出用户请求的最后日期的唯一方法是使用 QBUUser lastRequestAt。

【讨论】:

【参考方案2】:

这是我的自定义函数,用于了解用户的存在。我设置了一个每 10 秒运行一次的计时器。

 func update() 
            let currentTimeInterval: Int = Int(NSDate().timeIntervalSince1970)
            var userlastrew = Int()

            let rid = UInt(dialog.recipientID)
            var differ = Int()

            QBRequest.userWithID(rid, successBlock:  (response : QBResponse, user: QBUUser?) -> Void in
                userlastrew = Int((user?.lastRequestAt?.timeIntervalSince1970)!)
                differ = currentTimeInterval - userlastrew

                if differ > 120 
                    let (d,h,m) = self.secondsToHoursMinutesSeconds(differ)
                    var txt = String()
                    if (d <= 0) 
                        if (m > 60 && h > 1 ) 
                            txt = "Last online \(h) hours ago"
                        
                        if (m >= 60 && h == 1) 
                            txt =  "Last online \(h) hour ago"
                        
                        if (m < 60 && h < 1) 
                            txt = "Last online \(m) minutes ago"
                        
                        if (m < 60 && h == 1) 
                            txt = "Last online \(h) hour ago"
                        
                        if (m < 60 && h > 1) 
                            txt = "Last online \(h) hours ago"
                        
                     else 
                        if (d > 1) 
                            txt = "Last online \(d) days ago"
                         else 
                            txt = "Last online \(d) day ago"
                        

                    
                    //user is offline
                 else 
                    //user is online   
                
                , errorBlock: (response: QBResponse) -> Void in
                    // Handle error
            )
        

func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) 
        return (seconds / 86400, seconds / 3600, (seconds % 3600) / 60)
    

【讨论】:

以上是关于Quickblox 用户在线状态 IOS的主要内容,如果未能解决你的问题,请参考以下文章

使用 QuickBlox 获取用户是不是在线

如何在 Quickblox 中找出用户是不是在线?

如何在快速 blox 中管理在线和离线状态

是否有任何 REST API 可以在 rails 中的 quickblox 中获取在线用户

在 Quickblox Chat sdk 中聊天/1:1 聊天

使用 QuickBlox JS SDK 列出房间在线用户数