用户离开应用程序后的NSTimer

时间:2016-06-12 04:32:21

标签: ios objective-c

我正在目标C中创建一个iOS应用程序。我不想为服务器付费,但我想创建一个奖励系统,以便每3个小时用户在进入应用程序时获得“硬币”奖励。例如,如果用户在下午1点退出应用程序并在下午5点重新进入应用程序,则会准备好奖励。但是,即使应用程序没有在后台运行,我也希望这种情况继续存在。

这可能吗?

2 个答案:

答案 0 :(得分:2)

可能不是这里的计时器,但保存用户'通过NSUserDefaults退出时间,然后每当用户重新进入应用时,将退出时间与当前时间进行比较,以查看差距是否为3小时。

例如,在viewWillDisappear()中 您可以通过以下方式保存退出时间:

NSUserDefaults.standardUserDefaults().setObject(NSDate(), forKey: "exitTime")

在viewDidLoad()中,您可以通过

提取退出时间
NSUserDefaults.standardUserDefaults().objectForKey("exitTime")

答案 1 :(得分:1)

在AppDelegate中,您可以将退出日期时间保存到NSUserDefaults

当下面的函数调用时

  

func applicationWillTerminate(application:UIApplication)

     

func applicationDidEnterBackground(application:UIApplication)

当用户输入前景时,您可以将退出时间与当前时间进行比较并给出一些硬币

但这种方式存在一些问题

如果用户在设置中编辑了iPhone的日期或时间,可以获得硬币日志

但如果您使用服务器,则可以正确比较日期

有一些想法可以在没有服务器的情况下解决这个问题

如何定期保存当前时间或日期?

这是用例

  1. 用户编辑iphone的时间到
  2. 后3小时
  3. 用户输入应用
  4. 用户获取硬币
  5. 用户将iphone的时间编辑为
  6. 之前的3小时
  7. 用户丢失硬币和一些项目
  8. 如果currentdate早于保存当前日期,那么你必须拿硬币,因为这是无效硬币

    我的想法怎么样?