如何使iPhone App限制使用每天一个

时间:2011-04-20 02:18:12

标签: iphone nsdate

所以基本上,我一直在尝试很多我在这里和其他地方读过的东西,而且还没能让它工作。

我一直在使用setObject等将一个NSDate保存为UserDefaults中的对象。然后用[NSData date]等获取当前时间,我的问题是比较。我见过其他人的例子,似乎没有什么能做我需要的。

这只是一个if语句,我需要知道++变量,如果从上次执行它已经过去了18个小时(它保存了NSDate)。否则它只显示一个消息。我遇到的问题是我无法弄清楚如何检查当前日期>保存日期18小时+。有人可以帮忙吗?我已经尝试将它们转换为NSTimeIntervals并从中进行计算,但不知怎的,我搞砸了。

3 个答案:

答案 0 :(得分:1)

我会在NSUserDefaults中为该应用存储 LastAccessDate 。在应用程序打开,启动,激活等时,我会检查timeIntervalSinceNow这个值是否少于18小时。查看NSDate Class

示例(未测试):

NSDate *lastAccessDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastAccessDate"]]
NSTimeInterval duration = [lastAccessDate timeIntervalSinceNow];
int hoursPassed = duration / 3600;

答案 1 :(得分:0)

一天限制使用一次是什么意思?你的意思是只让应用程序每天做一次有用的事情吗?当然,这是App Store拒绝的一条道路,特别是如果您在加载应用程序后不让用户做任何事情。

无论如何,如果你想继续这样的事情,逻辑可能是这样的:

NSDate *lastSyncDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"last_app_rundate"];  
NSTimeInterval interval = [[NSDate date] timeIntervalSinceDate:lastSyncDate];

if ((interval / 3600) >= 18) {
   // let your user use your app
   [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"last_app_rundate"];
}

编辑:回答太慢了!

答案 2 :(得分:0)

试试这个,

NSTimeInterval dateDiff = [lastAccessDate timeIntervalSinceNow];
int hours=trunc(dateDiff/(60*60));