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的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何 REST API 可以在 rails 中的 quickblox 中获取在线用户