2014-07-21 25 views
3

方案
我有这两个云功能,我想在我的应用程序中使用。他们检查用户的在线状态,我想为每个用户设置一个布尔键“isOnline”,如果用户在线,则为YES;如果不是,则为“否”。解析iOS SDK:从Xcode调用云功能

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); 
    }); 
}); 

问题
我不是最好的使用JavaScript,正因为如此,我需要一些帮助让我的周围发生了什么头/就是我应该做的。

问题
)我什么时候叫我的Xcode项目中 “registerActivity” 和 “getOnlineUsers”?

)“response.success(users)”只是一个PFUser对象的数组吗?如果“2)”为真,那么如何将“response.success(users)”中的所有用户的布尔键“isOnline”设置为YES(如果它们在数组中) ?

回答

5
  1. 当你想获得在线用户时,你可以调用这些函数。调用这些代码将是:

    [PFCloud callFunctionInBackground:@"registerActivity" withParameters:@{@"user": Put objectId for user here}        
    block:^(NSString *response, NSError *error) { 
                if (!error) { 
    
                } 
               }]; 
    
    [PFCloud callFunctionInBackground:@"getOnlineUsers" withParameters:@{} 
    block:^(NSArray *users, NSError *error) { 
    if (!error) 
    { 
    
    } }]; 
    
  2. 是的,我认为这纯粹是PFUser对象的数组,我会跑只是为了确保,虽然。

  3. 一旦你从“getOnlineUsers”回应你应该把它备份到使用的主密钥(Parse.Cloud.useMasterKey();)访问/修改用户对象的另一个云代码的功能,而“isOnline”字段设置为YES 。

+0

嗨雅各非常感谢您的回答。如果你能为我澄清这一件事,我很欣赏它,因为没有人向我解释过这一点 - 那么,NSArray *用户(在上面的完成代码块中)与云功能中的response.success(用户)是一样的吗? –

+0

另外,如果你也可以帮我解决这个问题。 **在我的Xcode项目中,我可以调用“registerActivity”和“getOnlineUsers”吗?我在applicationDidFinishLaunchingWithOptions方法中调用“registerActivity”吗?每次我将“在线标签”设置为在线或离线时,是否都要调用“getOnlineUsers”? –

+0

汤姆,没问题。是的,他们基本上是一样的。当你调用response.success(用户)时,你正在将用户对象数组发回块中,并成为NSArray *用户。至于你的第二个问题,我有点困惑。我猜这些功能的重点在于获取在线用户列表,并且很可能将其展示给应用中的用户。如果您希望在应用启动时发生这种情况,那么我会将其放入您的第一个视图控制器的代码中,否则,我会将它放在任何想要获取在线用户列表的位置。如果我明白这个错误,请告诉我。 – Jacob