アプリケーションでユーザーの使用時間を計算する最良の方法は何ですか? で保存してもNSUserDefaults
よろしいでしょうか?どの形式で保存すればよいですか?
ユーザーが2時間プレイするたびにアプリを3〜4回プレイしたかどうかを知りたいので、毎回時間を前の時間に追加したいので、6時間になります。
ありがとう!
アプリケーションでユーザーの使用時間を計算する最良の方法は何ですか? で保存してもNSUserDefaults
よろしいでしょうか?どの形式で保存すればよいですか?
ユーザーが2時間プレイするたびにアプリを3〜4回プレイしたかどうかを知りたいので、毎回時間を前の時間に追加したいので、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"]
お役に立てれば。