在我的应用程序中计算用户使用时间的最佳方法是什么。可以将其保存在NSUserDefaults
中吗?我应该以哪种格式保存它?
我想知道用户是否允许说播放应用程序3-4次,每次他已经玩了2个小时,所以我希望每次都将时间添加到以前的时间,所以现在我会在那里6个小时。
谢谢!
答案 0 :(得分:2)
我确实建议使用NSUserDefaults。
在didFinishLaunching中将当前日期存储在app委托的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中重置opensTime
[defaults setDouble:0.0f forKey:@"openedTime"]
希望这有帮助。