Parse.com - 托管私人文件并有条件地允许下载

时间:2015-07-18 21:27:16

标签: ios parse-platform

我希望在解析云和某些条件下为我的游戏托管几个级别。

首先,如何下载任何用户可以访问的文件?

更新:好的,我已经创建了一个自定义类,并添加了一个包含文件类型的列并上传了我的文件。

其次,如何创建一个API来检查特定用户的某些条件,如果满足这些条件,则允许并开始下载?

编辑(更多信息):假设我有一个按钮可以下载一些文件。当用户按下它时,我希望Parse检查Cloud Code中的某些条件,如果满足它们,它将开始下载,否则将告诉用户它还不可能。

Edit2:似乎我被禁止提出这个问题,但我不知道如何更清楚。实际上,我已经找到了方法。所以这是我正在寻找的答案,现在你可以看到我表达自己的正确。

我所做的是在云代码中编写了一个简单的函数,如下所示:

Parse.Cloud.define("check", function(request, response) {
   var user = Parse.User.current();//request.user;

   if (user != null) {
   var field1 = user.get("field1");
   var field2 = user.get("field2");
                   console.log(field1);
                   console.log(field2);
   response.success(field1 < field2);
   } else {
   response.error("user isn't logged in");
   }
});

然后在我的应用程序中,我只需执行以下操作:

 if let cloudCheck = PFCloud.callFunction("check", withParameters: nil) as? Bool {
                //download files if cloudCheck is true
            }

1 个答案:

答案 0 :(得分:1)

根据您的问题,回答非常困难,因为您没有提供有关实际问题的大量信息。

但是,如果您只是想检查用户是否已解锁level2,您可以在用户类中创建一个新字段,如果用户已解锁level2则输入YES,否则输入NO(对于示例):

 [[PFUser currentUser] setObject:@"YES" forKey:@"UnlockedLevel1"];

然后只需检查每个用户该字段是返回YES还是NO:

NSString *unlockedLevel1 = [[PFUser currentUser] objectForKey:@"UnlockedLevel1"];
if ([unlockedLevel1 isEqualToString:@"YES"]) {
   //User unlocked the level
}

同样,您也可以简单地将NSArray保存在“unlockedLevels”字段中,在该字段中存储用户的所有未锁定级别,然后,当您要检查用户是否已解锁某个级别时,您只需收集该数组并检查相应级别是否在数组中。

编辑:因此,您有用户点击下载按钮,然后您想检查是否允许他们下载您的文件。假设一个用户被允许下载文件,如果他以某种方式解锁它(通过购买或其他......)。用户解锁文件的那一刻,您将新对象存储在属于该用户的字段中:

[[PFUser currentUser] setObject:@"YES" forKey:@"downloadAllowed"]; 

当同一个用户想要下载该文件时,您检查该用户是否允许下载(您只需检查您的具体情况):

NSString *downloadAllowed = [[PFUser currentUser] objectForKey:@"downloadAllowed"];
if ([downloadAllowed isEqualToString:@"YES"]) {
   //User unlocked the download
} else {
   //This user is not allowed to download the file
}

请注意,代码与以前完全相同!您对问题的编辑根本没有改变您的问题,仍然可以使用完全相同的代码来回答。也许你应该添加更多关于你的病情的信息。如果由于它们的性质而无法将它们存储在PFUser对象中,那么知道这将是有用的。 ; - )