0

在我的应用程序中计算用户使用时间的最佳方法是什么。保存在里面好吗NSUserDefaults?我应该以哪种格式保存它?

我想知道用户是否可以说玩了应用程序 3-4 次,每次他玩了 2 个小时,所以我希望每次的时间都加到以前的时间上,所以现在我会有 6 个小时。

谢谢!

4

1 回答 1

2

我确实建议使用 NSUserDefaults。

在 didFinishLaunching 中将当前日期存储在您的应用程序委托的 ivar 中:

在您的 AppDelegate.h 中:

NSDate *startTime;

在你的 .m 中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  startTime=[NSDate date]; //stores the current time in startTime
}

现在每次用户暂停/关闭应用程序时,计算 startTime 和当前时间之间的差异,并将其添加到 NSUserDefaults 中的值:

- (void)applicationDidEnterBackground:(UIApplication *)application {
  double diff=[startTime timeIntervalSinceNow]*(-1); //timeIntervalSinceNow is negative because startTime is earlier than now
  NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
  [defaults setDouble:[defaults doubleForKey:@"Time"]+diff forKey:@"openedTime"]
}

并将当前日期再次存储在 didBecomeActive 中:

- (void)applicationDidBecomeActive:(UIApplication *)application {
startTime=[NSDate date];
}

然后你可以得到使用时间到现在使用

double usedTime=([startTime timeIntervalSinceNow]*(-1))+[[defaults doubleForKey:@"Time"] doubleForKey:@"Time"];

如果您只想获取自用户上次启动应用程序以来的打开时间,请在 didFinishLaunching 中重置 openTime

[defaults setDouble:0.0f forKey:@"openedTime"]

希望这可以帮助。

于 2012-11-02T19:23:25.567 回答