在我的应用程序中计算用户使用时间的最佳方法是什么。保存在里面好吗NSUserDefaults
?我应该以哪种格式保存它?
我想知道用户是否可以说玩了应用程序 3-4 次,每次他玩了 2 个小时,所以我希望每次的时间都加到以前的时间上,所以现在我会有 6 个小时。
谢谢!
在我的应用程序中计算用户使用时间的最佳方法是什么。保存在里面好吗NSUserDefaults
?我应该以哪种格式保存它?
我想知道用户是否可以说玩了应用程序 3-4 次,每次他玩了 2 个小时,所以我希望每次的时间都加到以前的时间上,所以现在我会有 6 个小时。
谢谢!
我确实建议使用 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"]
希望这可以帮助。