お使いのブラウザは、バージョンが古すぎます。

このサイトは、Internet Explore8・Internet Explore9には対応しておりません。
恐れ入りますが、お使いのブラウザをバージョンアップしていただきますよう宜しくお願いいたします。

【iOS】アプリがバックグラウンド・フォアグラウンド状態になった時の実行処理

今回はタイトルの通り、アプリがバックグラウンド・フォアグラウンド状態になった時の実行処理ついて書いてみます。

例えば、ホームボタンを押した際にデータを保存したいとか、再度アプリを起動した時に何らかの処理を実行させたいとか、色々な使い方が出来ると思います。

AppDelegateから通知

AppDelegateからバックグラウンド・フォアグラウンド状態になった時に呼び出されるメソッドがあります。
●アプリが非アクティブになりバックグランド実行になった際に呼び出される
– (void)applicationDidEnterBackground:(UIApplication *)application

●2回目以降の起動時に呼び出される(バックグラウンドにアプリがある場合)
– (void)applicationWillEnterForeground:(UIApplication *)application

これらのメソッド内からNSNotificationCenter を使って実行させたいメソッドへ通知を送信する処理をそれぞれ追記します。


//アプリが非アクティブになりバックグランド実行になった際に呼び出される
- (void)applicationDidEnterBackground:(UIApplication *)application
{
  NSNotification* n = [NSNotification notificationWithName:@"applicationDidEnterBackground" object:self];
  // 通知を行う
  [[NSNotificationCenter defaultCenter] postNotification:n];
}

//2回目以降の起動時に呼び出される(バックグラウンドにアプリがある場合)
- (void)applicationWillEnterForeground:(UIApplication *)application
{
  NSNotification* n = [NSNotification notificationWithName:@"applicationWillEnterForeground" object:self];
  // 通知を行う
  [[NSNotificationCenter defaultCenter] postNotification:n];
}

NSNotificationCenterを生成

通知先ViewControllerのviewDidLoadに以下を追記します。
AppDelegateから通知が送られてきた際に、「selector」で指定したメソッドを実行することを設定します。

- (void)viewDidLoad
{
    [super viewDidLoad];

 //  通知受信の設定
 NSNotificationCenter*   nc = [NSNotificationCenter defaultCenter];
    [nc addObserver:self selector:@selector(applicationDidEnterBackground) name:@"applicationDidEnterBackground" object:nil];
    [nc addObserver:self selector:@selector(applicationWillEnterForeground) name:@"applicationWillEnterForeground" object:nil];
}

通知受信して実行されるメソッド

ここで通知を受け取ったメソッドを実行する処理を記述します。

//アプリが非アクティブになりバックグラウンド実行になった際に呼び出される
- (void)applicationDidEnterBackground

{

#if defined(DEBUG)

NSLog(@"applicationDidEnterBackground");

// バックグラウンド時になった時の実行処理

#endif

}

//2回目以降のフォアグラウンド実行になった際に呼び出される(Backgroundにアプリがある場合)---------------------------------------------------------------------------------

- (void)applicationWillEnterForeground

{

#if defined(DEBUG)

NSLog(@"applicationWillEnterForeground");

// 2回目以降の起動時になった時の実行処理

#endif

}

これで、アプリがバックグラウンド・フォアグラウンド状態になった時の処理が簡単に実行できます。

コメントをどうぞ

メールアドレスは公開されません。* が付いている欄は必須項目です。


お気軽にお問い合わせください。

日本VTR実験室では、お仕事のご依頼、ブログ・コラムのご感想などを受け付けております。
アプリ開発・コンテンツ制作でお困りでしたら、お気軽にご相談ください。
ご連絡お待ちしております。

お問い合わせはこちらから

03-3541-1230

info@nvtrlab.jp

電話受付対応時間:平日AM9:30〜PM6:00