iOSアプリのインストール日時を取得する

前回に引き続き、AndroidとiOSのアプリ作成での調査メモを。

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)で実施。

コメント

このブログの人気の投稿

ユースケースポイント法(UCP法)

COCOMO(工数と工期)