【问题标题】:How to make iPhone App limit use to one per day如何将 iPhone App 限制为每天使用一个
【发布时间】:2011-04-20 02:18:12
【问题描述】:

所以基本上,我一直在尝试很多我在这里和其他地方读过的东西,但都无法让它发挥作用。

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

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

【问题讨论】:

  • 我希望您对此有充分的理由(并且会假设如此,除非另有说明)但是如果应用程序试图向我发号施令,我会该死生气我每天只能使用一次。首先,如果它崩溃了(在写完日期之后但在我做任何有用的事情之前)或者我意外退出了怎么办?并不是说你的方法是错误的,只是希望你已经足够思考了。
  • 哦,该应用程序有很多功能(总共 15 个),这更像是一个奖励功能,我不想每天增加超过一次。只是一个奖励功能。

标签: iphone nsdate


【解决方案1】:

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

示例(未测试):

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

【讨论】:

    【解决方案2】:

    你说的限制使用一天一次是什么意思?你的意思是只让应用程序每天做一次有用的事情?这无疑是 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"];
    }
    

    编辑:回答太慢了!

    【讨论】:

    • 是的,这只是应用程序的奖励部分,我不希望他们累积积分,每天一次。该应用程序的其余部分将保持正常运行。感谢大家的快速响应。
    【解决方案3】:

    试试这个,

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

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      相关资源
      最近更新 更多