我正在开发一个应用程序,我需要非常节省API请求,请求越少越好。问题是每个用户都有设置和消息,我想避免在每次唤醒时提取可能的更改。我不能依赖每个用户启用推送通知。
我的方法是妥协,以强制用户只能使用一台设备登录。如果他们尝试使用其他设备(通过Facebook)登录,则会收到错误消息,他们可以选择取消登录或继续远程注销其他设备。
这可能吗?
答案 0 :(得分:0)
我找到了解决这个问题的方法。
云代码:
Parse.Cloud.define("getSessionCount", function(request, response) {
if (request.user == null) {
reportError("findSessions", "userCheck", 0);
response.error("invalid user");
return
}
var query = new Parse.Query(Parse.Session);
query.find({
success: function(results) {
response.success(results.length);
},
error: function(error) {
response.error(error);
}
});
});
Parse.Cloud.define("deleteAllOtherSessions", function(request, response) {
if (request.user == null) {
reportError("deleteAllOtherSessions", "userCheck", 0);
response.error("invalid user");
return
}
var sessionToken = request.params.sessionToken;
var query = new Parse.Query(Parse.Session);
// this query will find only sessions owned by the user since
// we are not using the master key
query.find().then(function(results) {
var promises = [];
_.each(results, function (result) {
if(result.get("sessionToken") != sessionToken) {
promises.push(result.destroy());
}
});
return Parse.Promise.when(promises);
}).then(function() {
response.success(true);
},
function(error) {
response.error(error)
});
});
Parse.Cloud.define("deleteLastSession", function(request, response) {
if (request.user == null) {
reportError("deleteLastSession", "userCheck", 0);
response.error("invalid user");
return
}
var sessionToken = request.params.sessionToken;
var query = new Parse.Query(Parse.Session);
query.descending("createdAt");
// this query will find only sessions owned by the user since
// we are not using the master key
query.find().then(function(results) {
var promises = [];
console.log(results);
promises.push(results[0].destroy());
return Parse.Promise.when(promises);
}).then(function() {
response.success(true);
},
function(error) {
response.error(error)
});
});
希望能帮助某人。