1

我是一名新程序员,并且已经搜索过这个答案,但我认为我可能没有使用正确的术语。

我想要做的是允许用户在 24 小时内只使用一次我的应用程序,这是一个游戏。如果他们尝试在 24 小时之前玩游戏,我想要一个提醒,告诉他们稍后再回来。我已经看到其他给你“积分”的游戏这样做了,但似乎找不到代码。

任何帮助表示赞赏!

4

4 回答 4

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
于 2012-11-14T23:51:55.810 回答
2

同意上述回复:坚持一个NSDate。如果您对重新安装时可能违反的约束没有意见,那么 NSUserDefaults 最有意义。

您需要问和回答的另一个问题是“运行”一次的真正含义。这是否意味着启动一次并运行很多,或者只激活一次,或者其他什么?假设用户玩了一分钟然后接到电话(那是一个 didFinishLaunching 和两个 didBecomeActive),那么您如何执行?

What you might really need is a total play time that cannot exceed some value over the trailing 24 hours.

于 2012-11-15T00:16:01.363 回答
1

您的应用程序打开,您将当前日期/时间设置为游戏开始的时间。每次应用程序打开时,您都会检查您是否已超过保存的日期/时间 24 小时,如果没有,则将它们带到另一个视图或仅显示一条消息,告诉他们在_小时后回来。

查看将 NSDates 保存到 NSUserDefaults 以及如何比较 NSDates,您应该能够相对轻松地完成此操作。

这种方法的问题是他们能够删除应用程序并重新安装它,这将重置您的 NSUserDefaults 或该应用程序的任何其他本地存储。为了解决这个问题,您必须在服务器上创建用户帐户(可能是您看到的其他应用程序所做的),或者至少为他们的设备发送一个唯一 ID 并在服务器端处理它。

于 2012-11-14T23:52:18.943 回答
0

您可以在此处查看我的回答以获取类似的问题。

无论如何,如果用户在设备上手动重新安装应用程序或更改日期,它不会阻止。为了实现您的需求,最好保留并验证用户实际通过您的外部服务器运行应用程序的日期。也许您可以在服务器端使用 php 并通过 NSURLConnection POST 请求连接到它。

于 2012-11-14T23:54:58.180 回答