ios - Parse.com - 托管私有(private)文件并有条件地允许下载

标签 ios parse-platform

<分区>


想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post .

关闭 7 年前

我想在特定条件下在解析云中为我的游戏托管多个关卡。

首先如何下载理论上任何用户都可以访问的文件?

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

其次,如何创建一个 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
            }

最佳答案

根据你的问题,很难回答,因为你没有提供太多关于你的实际问题的信息。

但是,如果您只想检查用户是否已解锁 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
}

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

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

[[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 对象中,那么了解这一点会很有用。 ;-)

关于ios - Parse.com - 托管私有(private)文件并有条件地允许下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495748/

上一篇:ios - 基于数组中的 n 个图像在 View 中居中图像

下一篇:ios - iAd Banner swift,添加 iAd 后游戏开始崩溃

相关文章:

android - java.lang.NullPointerException : Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference 异常

swift - 如何在 PFTablequery 中返回多个 findObjectsInBackground

ios - 我可以更新协议(protocol)扩展中的指定属性吗?

ios - Websockets 可以在手机上运行吗?

iOS:当键盘出现时禁用 UITableView 动画

ios - 如何从 Swift 更新 Parse 中的数组

swift - 使用 Swift 而不是 Objective-C 从解析数据中保存对象

ios - 推送通知测试工作流程 [iOS]

ios - UNNotificationServiceExtension - 在应用程序处于事件状态时隐藏

iphone - 核心数据迁移 : How to delete the Core Data stack?