jubilee

Programing, Books and more...

ViewControllerでアプリの状態を検知する

ViewControllerで、バックグラウンドから復帰した際の処理をしたかったが、検知できる方法がAppDelegate.mの applicationWillEnterForeground: 以外に思いつかなかったので調査。
結果としては、ViewControllerでもアプリの状態を検知する方法があった。

通知を利用する

ViewController.mの viewWillAppear などに、通知を追加しておく。

追加

1
2
3
4
5
6
7
8
- (void)viewWillAppear:(BOOL)animated
    // UIApplicationDidBecomeActiveNotification:アクティブになったとき
    // applicationDidBecomeActive(自作)メソッドを呼ぶ
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(applicationDidBecomeActive)
                                                 name:UIApplicationDidBecomeActiveNotification
                                               object:nil];
}

削除

1
2
3
4
5
- (void)viewWillDisappear:(BOOL)animated
{
    // 通知の削除
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

状態一覧

UIApplicationのNotifications一覧

ライフサイクル系

  • UIApplicationDidFinishLaunchingNotification
    • アプリケーションが起動した直後に通知
  • UIApplicationWillEnterForegroundNotification
    • アプリケーションがアクティブになる直前に通知
  • UIApplicationDidBecomeActiveNotification
    • アプリケーションがアクティブになった時に通知
  • UIApplicationDidEnterBackgroundNotification
    • アプリケーションがバックグラウンドに入る時に通知
  • UIApplicationWillResignActiveNotification
    • アプリケーションがアクティブで無くなる直前に通知。通知アラートが表示される時などにも通知される
  • UIApplicationWillTerminateNotification
    • アプリケーションが終了される直前に通知

サイズ変更系

  • UIApplicationWillChangeStatusBarFrameNotification
    • ステータスバーのサイズ変更される直前に通知
  • UIApplicationDidChangeStatusBarFrameNotification
    • ステータスバーのサイズ変更が発生した時に通知。デバイスが回転した時など
  • UIApplicationWillChangeStatusBarOrientationNotification
    • デバイスの向きが変わる直前に通知
  • UIApplicationDidChangeStatusBarOrientationNotification
    • デバイスの向きが変わった後に通知

その他

  • UIApplicationDidReceiveMemoryWarningNotification
    • メモリ不足の警告発生時に通知
  • UIApplicationProtectedDataDidBecomeAvailable
    • 保護されたファイルへコードからアクセスが可能になった時に通知
  • UIApplicationProtectedDataWillBecomeUnavailable
    • 保護されたファイルへコードからアクセス出来なくなる前に通知
  • UIApplicationSignificantTimeChangeNotification
    • 時間に大きな変更が有った場合に通知。日付が変わった時や夏時間に変更など

参考