parsingiOS SDK:如何设置用户“在线”状态?

情景=我有一个应用程序,允许用户login和查看也是“在线”的其他用户。 为了设置每个用户的在线状态,我相信我应该设置代码…

[PFUser currentUser] setObject:[NSNumber numberWithBool:YES] forKey:@"isOnline"]; [[PFUser currentUser] saveInBackground]; 

在应用程序的某些时候,当用户使用应用程序。 可能是appDelegate,但我不确定。

(如果这是不正确的,请纠正我)

问题=这个代码应该在应用程序的哪个位置设置,以便它始终跟踪用户何时“在线”以及何时“脱机”?

(请包括方法名称)

处理这个问题的最可靠的方法是创build一个名为lastActive的Datetypes的列,然后创build一个Cloud Code函数,用服务器时间更新(因此时钟差异不是问题)。

然后,要获得“在线”用户只需要另一个云端function,在lastActive大于现在的地方执行查询 – 一些时间窗口,如2分钟。

 var moment = require("moment"); Parse.Cloud.define("registerActivity", function(request, response) { var user = request.user; user.set("lastActive", new Date()); user.save().then(function (user) { response.success(); }, function (error) { console.log(error); response.error(error); }); }); Parse.Cloud.define("getOnlineUsers", function(request, response) { var userQuery = new Parse.Query(Parse.User); var activeSince = moment().subtract("minutes", 2).toDate(); userQuery.greaterThan("lastActive", activeSince); userQuery.find().then(function (users) { response.success(users); }, function (error) { response.error(error); }); }); 

您的客户需要每1.5分钟调用一次registerActivity Cloud Function,以允许一些重叠,以便在互联网有点慢时用户看起来不会离线。

当然,你可以调整时间窗口,以满足您的需求。 您还可以添加过滤哪​​些用户的function(例如,仅限在线的朋友)。