2012-11-14 27 views
1

我是一名新程序员,曾经搜索过这个答案,但认为我可能没有使用正确的术语。我如何让用户每天只能使用一次应用程序?

我所试图做的是让用户在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 
+0

这很好,谢谢,我想添加一件事情,以防其他人想要使用它,一旦我有两个不同的日期,我使用NSCalendar和NSDateComponents来弄清楚日期的差异是24小时还是更多,再次感谢 –

1

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

查一查节约NSDates NSUserDefaults的到,如何比较NSDates,你应该能够拉这一关相对容易。

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

+0

另一种选择是将日期保存在钥匙串中。如果应用程序被删除,它将不会被删除。钥匙串并不是为此而设计的,但它起作用。 –

+0

对于这个问题,将它保存到UIPasteboard中,但正如你所说的那样,它并不是为此而设计的。这两个选项都可以工作。 – rooster117

0

你可以看看我的回答对here类似的问题。

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

2

同意上面的re:坚持一个NSDate。如果你可以在重新安装时违反约束条件,那么NSUserDefaults是最有意义的。

你要问和回答什么是你真正的“跑”的意思是,一旦其他问题。这是否意味着启动一次并且运行很多,或者只启动一次或者其他的东西?说用户打了一分钟然后接到一个电话(这是一个didFinishLaunching和两个didBecomeActive的),那么你的执行如何?

你可能真的需要的是一个总播放时间不能超过后24小时超过一定的价值。

相关问题