2012-11-02 2 views
0

내 응용 프로그램에서 사용자의 사용 시간을 계산하는 가장 좋은 방법은 무엇입니까? NSUserDefaults에 저장해도 괜찮습니까? 어떤 형식으로 저장해야합니까?응용 프로그램에서 사용자 사용 시간을 계산하고 저장하는 가장 좋은 방법

사용자가 앱을 3-4 회 재생할 수 있는지 알고 싶습니다. 매번 2 시간 동안 재생할 때마다 이전 시간에 추가 할 시간이 필요하므로 지금해야합니다. 거기 6 시간.

감사합니다.

답변

2

저는 실제로 NSUserDefaults를 사용하는 것이 좋습니다.

스토어 didFinishLaunching에서 앱 위임의 바르 현재 날짜 : 당신의 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"]; 

를 사용 할 때까지 사용 시간을 얻을 수 있습니다 마지막으로 사용자가 앱을 시작한 후 종료 시간을 재설정했습니다. 시작일 :

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

희망이 도움이됩니다.

+0

있습니다! 고맙습니다,하지만 왜 응용 프로그램의 * (- 1)이 백그라운드로 들어 왔습니까? –

+0

또한 응용 프로그램 내부에서 현재 사용 시간을 알고 싶기 때문에 그다지 좋지 않습니다. 그러나 첫 번째 재생에서는 전혀 사용할 수 없으며 응용 프로그램을 종료 할 때까지 현재 시간을 저장하지 않습니다. 아마 다른 방법이있을거야? –

+0

어디서나 사용 시간을 얻는 방법에 대한 추가 정보를 추가했습니다. 사실, 위의 코드는 사용자가 다른 앱으로 변경할 때마다 사용 시간을 절약합니다. 이는 내 의견으로는 가장 효율적인 방법입니다. –