iOSアプリのインストール日時を取得する
前回に引き続き、AndroidとiOSのアプリ作成での調査メモを。
Androidはアプリケーション自身が「自分がいつインストールされたのか」を取得できるAPIが存在しますと。
アプリケーションのインストール日時、更新日時を取得する TechBooster
APIレベル9,Android2.3からではありますが、このうちインストール日時が特に使いたい機能だった訳です。
で、コレに相当する機能がiOSにあるのかどうか、ここ数日しらべまくりました。
結論から言えば、一発で取得できるメソッドは無いけど、取得はできる、だろうと。
Androiのように上手く取得できるメソッドが無いので、sysctlとかNSTaskとか色々探したものの、すべて検討違いなところで、最終的にはすでに買ってあったObjective-Cの逆引きハンドブックに書いてあったというオチ。
肝はインストールされる「*.app」自身のタイムスタンプを取得できればよいということで、
1、NSFileManagerをつかう
2、ホームディレクトリからアプリ自身のappファイルのパスを設定する
という2点でできました。
以下、サンプルコード。
アプリの名前が「AppTimeTest」という前提。
ファイル変更日時も取得できますが、インストール日時と同じになってしまうようで、今日時点ではどのような条件で変更日付が変わるかは不明。
なんとなく、AppStoreから新バージョンアップデートをしたら、かなぁ〜〜〜〜〜?と思うけど確認未済。
まぁ、作成日付が取得できればよかったので一旦これまで。
確認はiOSシュミレータと私物のiPhone4(iOS 5.1.1)で実施。
Androidはアプリケーション自身が「自分がいつインストールされたのか」を取得できるAPIが存在しますと。
アプリケーションのインストール日時、更新日時を取得する TechBooster
APIレベル9,Android2.3からではありますが、このうちインストール日時が特に使いたい機能だった訳です。
で、コレに相当する機能がiOSにあるのかどうか、ここ数日しらべまくりました。
結論から言えば、一発で取得できるメソッドは無いけど、取得はできる、だろうと。
Androiのように上手く取得できるメソッドが無いので、sysctlとかNSTaskとか色々探したものの、すべて検討違いなところで、最終的にはすでに買ってあったObjective-Cの逆引きハンドブックに書いてあったというオチ。
肝はインストールされる「*.app」自身のタイムスタンプを取得できればよいということで、
1、NSFileManagerをつかう
2、ホームディレクトリからアプリ自身のappファイルのパスを設定する
という2点でできました。
以下、サンプルコード。
アプリの名前が「AppTimeTest」という前提。
- (void)viewDidLoad { [super viewDidLoad]; //outletの代わりに紐付け textAppInstallDate = (UILabel*)[self.view viewWithTag:2]; textAppUndateDate = (UILabel*)[self.view viewWithTag:4]; textAppFilePath = (UILabel*)[self.view viewWithTag:6]; NSString *appFilePath; //ホームディレクトリパスを取得 appFilePath = NSHomeDirectory(); //ディレクトリパスにappファイル名を追加。 [appFilePath stringByAppendingString:@"AppTimeTest.app"]; //NSFileManagerでファイル情報をNSDictionaryにつめる。 NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *err = nil; NSDictionary *fileInfoDict; fileInfoDict = [fileManager attributesOfItemAtPath:appFilePath error:&err]; //一旦ログにだしてみる。errは普通何もでない。 NSLog(@"error = %@", err); NSLog(@"fileInfo = %@", fileInfoDict); //NSDictionaryからappファイル作成日時を取得 NSDate *fileInstallDate = [fileInfoDict objectForKey:NSFileCreationDate]; //appファイル変更日時を取得 NSDate *fileUpdateDate = [fileInfoDict objectForKey:NSFileModificationDate]; //TextLabelに出すのでフォーマット設定 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateStyle:NSDateFormatterMediumStyle]; [formatter setTimeStyle:NSDateFormatterMediumStyle]; //フォーマットに従ってTextLabelにセット。一応ファイルパスも表示。 [textAppInstallDate setText:[formatter stringFromDate:fileInstallDate]]; [textAppUndateDate setText:[formatter stringFromDate:fileUpdateDate]]; [textAppFilePath setText:appFilePath]; }
ファイル変更日時も取得できますが、インストール日時と同じになってしまうようで、今日時点ではどのような条件で変更日付が変わるかは不明。
なんとなく、AppStoreから新バージョンアップデートをしたら、かなぁ〜〜〜〜〜?と思うけど確認未済。
まぁ、作成日付が取得できればよかったので一旦これまで。
確認はiOSシュミレータと私物のiPhone4(iOS 5.1.1)で実施。
コメント