LoginSignup
253
219

More than 3 years have passed since last update.

iOSアプリのライフサイクル

Last updated at Posted at 2019-06-06

はじめに

iosでAppDelegateのメソッドがどんな時に呼ばれるかを知りたかったので、
Appleの資料の確認と、アプリを実装して確認しました。

実装した環境

  • Xcode 10.2.1
  • SWIFT 5
  • ios 12

アプリライフサイクルと呼ばれるメソッド

アプリライフサイクル

下の図は、アプリライフサイクルとそれぞれの遷移時にAppDelegateで呼ばれるメソッドです。

20190606-ios-lifecycle.png

アプリの起動時

アプリを最初のタップして、起動した時のAppDelegateの呼ばれる順番です。

  • func application(_:willFinishLaunchingWithOptions)
  • func application(_:didFinishLaunchingWithOptions:)
  • func applicationDidBecomeActive(UIApplication)

アプリをバックグランドへ

アプリをバックグランドに移した時のAppDelegateの呼ばれる順番です。

  • func applicationWillResignActive(UIApplication)
  • func applicationDidEnterBackground(UIApplication)

アプリがバックグランドの状態でアプリアイコンを押す

アプリがバックグランド状態で、アプリアイコンを押すと、アプリがフォアグランドに遷移します。この時のAppDelegateの呼ばれる順番です。

  • func applicationWillEnterForeground(UIApplication)
  • func applicationDidBecomeActive(UIApplication)

アプリの終了時

アプリ終了時にAppDelegateの呼ばれる順番です。

  • func applicationWillResignActive(UIApplication)
  • func applicationDidEnterBackground(UIApplication)
  • func applicationWillTerminate(UIApplication)

UniversalLinkで起動した場合

アプリ未起動時 (Not Running)

アプリが起動されていない状態(Not Running)の時に、universal linkでアプリが起動した時のAppDelegateのメソッドの呼ばれる順番です。

  • func application(_:willFinishLaunchingWithOptions)
  • func application(_:didFinishLaunchingWithOptions:)
  • func application(_:continue:restorationHandler:)
  • func applicationDidBecomeActive(UIApplication)

アプリバックグランド時(Background)

アプリがバックグランドの状態(Background)の時に、universal linkでアプリが起動した時のAppDelegateのメソッドの呼ばれる順番です。

  • func applicationWillEnterForeground(UIApplication)
  • func application(_:continue:restorationHandler:)
  • func applicationDidBecomeActive(UIApplication)

通知をタップして起動した場合

アプリ未起動時 (Not Running)

アプリが起動されていない状態(Not Running)の時に、通知からアプリが起動した時のAppDelegateのメソッドの呼ばれる順番です。

  • func application(_:willFinishLaunchingWithOptions)
  • func application(_:didFinishLaunchingWithOptions:)
  • func userNotificationCenter(_:didReceive:withCompletionHandler:)
  • func applicationDidBecomeActive(UIApplication)

アプリバックグランド時(Background)

アプリがバックグランドの状態(Background)の時に、通知からアプリが起動した時のAppDelegateのメソッドの呼ばれる順番です。

  • func applicationWillEnterForeground(UIApplication)
  • func userNotificationCenter(_:didReceive:withCompletionHandler:)
  • func applicationDidBecomeActive(UIApplication)

アプリ起動時(Foreground)

アプリがフォアグランドの状態(Foreground)の時に、通知をタップした時には、以下のメソッドが呼ばれます。
userNotificationCenter(_:willPresent:withCompletionHandler:)

アプリの現在の状態の取得方法

アプリの現在の状態は、UIApplication.shared.applicationStateで取得できます。状態は、UIApplication.Stateで定義されているactiveinactivebackgroundの3つです。

参考文献

253
219
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
253
219