Tom*_*ool 4 ios parse-platform
场景=我有一个应用程序,允许用户登录并查看也是"在线"的其他用户.为了设置每个用户的在线状态,我相信我应该设置代码......
[PFUser currentUser] setObject:[NSNumber numberWithBool:YES] forKey:@"isOnline"];
[[PFUser currentUser] saveInBackground];
Run Code Online (Sandbox Code Playgroud)
在用户使用应用程序时在应用程序中的某些时间.可能是appDelegate,但我不确定.
(如果这不正确那么请纠正我)
问题=应该在应用程序中设置此代码的位置,以便始终跟踪用户何时"在线"以及何时"脱机"?
(请包括方法名称)
Tim*_*ers 10
处理此问题的最可靠方法是创建一个名为lastActiveDate 的列,然后创建一个Cloud Code函数来更新服务器时间(因此时钟差异不是问题).
然后,为了让"在线"用户只有另一个云功能,它执行的查询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);
});
});
Run Code Online (Sandbox Code Playgroud)
您的客户希望registerActivity每1.5分钟调用一次云功能以允许一些重叠,这样如果用户的互联网速度有点慢,用户就不会离线.
当然,您可以根据需要调整时间窗口.您还可以添加过滤返回哪些用户的功能(例如,仅限在线朋友).
| 归档时间: |
|
| 查看次数: |
1627 次 |
| 最近记录: |