我是一名新程序员并且已经搜索过这个答案,但我想我可能没有使用正确的术语。
我要做的是允许用户在24小时内只使用我的应用程序,这是一款游戏。如果他们试图在24小时之前玩游戏,我想要一个警告,告诉他们稍后再回来。我已经看到这对于给你“积分”的其他游戏已经完成,但似乎无法找到代码。
感谢任何帮助!
答案 0 :(得分:3)
使用NSDate
类获取当前日期([NSDate date]
),然后使用NSUserDefaults
类保存此值。打开应用程序时,检索该值,然后将旧日期与当前日期进行比较。如果是一天,不要做任何事情。否则,请显示警告。
//setting the date
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"Date"];
//retrieve date
NSDate *date = [[NSUserDefaults standardUserDefaults] objectForKey:@"Date"];
//now compare the dates
答案 1 :(得分:2)
同意上述内容:坚持NSDate。如果您对重新安装时可能违反约束条件感到满意,那么NSUserDefaults最有意义。
你需要提问和回答的另一个问题是你曾经“跑”一次的真正含义。这是表示启动一次并且运行很多,或者只运行一次或其他什么?假设用户玩了一分钟然后接到一个电话(那是一个完成了FininLaunching和两个确实成为活动),那么你的执行情况如何呢?
您可能真正需要的是总的游戏时间,在过去的24小时内不能超过某个值。
答案 2 :(得分:1)
您的应用程序打开,您将当前日期/时间设置为游戏开始时间。每次应用程序打开时,您都会检查您是否在保存的日期/时间之后24小时,如果您没有,请将它们带到另一个视图或只显示一条消息,告诉他们返回 _ _小时。
查找将NSDates保存到NSUserDefaults以及如何比较NSDates,您应该能够相对容易地将其关闭。
这种方法的问题是他们能够删除应用程序并重新安装它,这将重置您的NSUserDefaults或该应用程序的任何其他本地存储。要解决这个问题,您必须在服务器上执行用户帐户(可能是您看到的其他应用程序所做的),或者至少为其设备发送一个唯一的ID并处理它的服务器端。
答案 3 :(得分:0)
对于类似问题,您可以查看我的回答here。
无论如何,如果用户手动重新安装app或在设备上更改日期,它不会阻止。 为了达到你所需要的,最好保持&验证用户通过外部服务器实际运行应用程序的日期。也许你可以在服务器端使用php并通过NSURLConnection POST请求连接到它。