記事
あなたのアプリの起動への対応
(Responding to the Launch of Your App)
アプリのデータ構造を初期化し、あなたのアプリを実行する準備をして、システムからの起動時の全てのリクエストに応答します。
概観
ユーザがホームスクリーンであなたのアプリのアイコンをタップすると、システムはあなたのアプリを起動します。あなたのアプリが特定のイベントをリクエストした場合、システムはそれらのイベントを処理するためにバックグラウンドであなたのアプリを起動することもあります。シーンを基礎としたアプリの場合、あなたのシーンの 1 つをスクリーン上に表示したり、何らかの作業を行ったりする必要があるときに、システムは同様にアプリを起動します。
すべてのアプリには、UIApplication (UIApplication) オブジェクトが表すプロセスが関連しています。アプリにはまた、そのプロセス内で発生する重要なイベントに応答する アプリデリゲートオブジェクト(UIApplicationDelegate (UIApplicationDelegate) プロトコルに準拠するオブジェクト) もあります。 シーンを基礎とするアプリでさえ、アプリデリゲートを使用して起動や終了などの基本的なイベントを管理しています。起動時に、UIKit は UIApplication オブジェクトとあなたのアプリデリゲートを自動的に作成します。次に、これはアプリのメインイベントループを開始します。
起動ストーリーボードの提供
ユーザが最初にデバイス上でアプリを起動すると、アプリが UI を表示する準備ができるまで、システムは起動ストーリーボードを表示します。起動ストーリーボードを表示すると、あなたのアプリが起動して何かを実行していることがユーザに保証されます。あなたのアプリが自身を初期化し、UI をすばやく準備する場合、ユーザは起動ストーリーボードを短時間しか見ない可能性があります。
Xcode プロジェクトには、カスタマイズできるデフォルトの起動ストーリーボードが自動的に含まれ、必要に応じてもっと起動ストーリーボードを追加できます。あなたのプロジェクトに新しい起動ストーリーボードを追加するには、以下の手順を実行します。
- Xcode であなたのプロジェクトを開きます。
- [File(ファイル)] > [New(新規)] > [File(ファイル)] を選択します。
- あなたのプロジェクトに起動スクリーンリソースを追加します。
あなたの起動ストーリーボードにビューを追加し、自動レイアウト制約を使用して、基になる環境に適応するようにビューのサイズと位置を設定します。UIKit は、あなたの制約を使用してビューを使用可能なスペースに合わせて、あなたの提供したものを正確に表示します。設計ガイダンスについては、ヒューマンインターフェイスガイドライン を参照してください。
重要
あなたの起動スクリーンには静止イメージを使用しないでください。iOS 14 以降では、起動スクリーンは 25 MB に制限されています。
あなたのアプリのデータ構造体を初期化
アプリの起動時の初期化コードを以下のいずれかまたは両方のメソッドで配置して下さい。
UIKit は、あなたのアプリの起動サイクルの開始時にこれらのメソッドを呼び出します。それらを使用して:
シーンを基礎にしていないアプリの場合、UIKit は起動時にデフォルトのユーザインターフェイスを自動的にロードします。application(_:didFinishLaunchingWithOptions:) メソッドを使用して、スクリーン上に表示される前にそのインターフェイスに追加の変更を加えます。たとえば、ユーザがアプリを最後に使用したときに行っていたことを反映するために、別の View Controller をインストールできます。
長時間実行されるタスクをメインスレッドから移動
ユーザがあなたのアプリを起動したら、すばやく起動して良い印象を与えて下さい。UIKit は、 application(_:didFinishLaunchingWithOptions:) メソッドが戻るまで、あなたのアプリのインターフェースを表示しません。そのメソッドまたはあなたの application(_:willFinishLaunchingWithOptions:) メソッドで長時間実行されるタスクを実行すると、あなたのアプリはユーザに遅く見える可能性があります。システムはアプリのバックグラウンド実行時間を制限するため、バックグラウンドで起動する場合は、すばやく戻ることも重要です。
あなたのアプリの初期化に重要ではないタスクを起動時のシーケンスから外します。例えば:
あなたのアプリが起動した理由を確認する
UIKit はあなたのアプリを起動すると、起動オプション辞書をあなたの application(_:willFinishLaunching
WithOptions:) メソッドと application(_:didFinishLaunchingWithOptions:) メソッドに渡し、あなたのアプリが起動した理由に関する情報を提供します。その辞書内のキーは、すぐに実行すべき重要なタスクを示しています。たとえば、それはユーザが他の場所で開始し、あなたのアプリ内で続行したいアクションを反映している場合があります。起動オプション辞書の内容で期待するキーを常に確認し、それらの存在に適切に対応してください。
注意
シーンを基礎としたアプリの場合、UIKit が application(_:
configurationForConnecting:options:) メソッドに渡すオプションを調べて、シーンが作成された理由を特定して下さい。
リスト 1 は、バックグラウンドでの位置の更新を処理するアプリへのアプリデリゲートメソッドを示しています。位置情報キーが存在する場合、アプリは位置情報の更新を後に延期するのではなく、すぐに開始します。位置の更新を開始すると、Core Location フレームワークが新しい位置イベントを配信できるようになります。
リスト 1 起動時に位置のイベントに応答する
class AppDelegate: UIResponder, UIApplicationDelegate,
// start the visits service right away.
// other methods…
}
あなたのアプリが対応する機能をサポートしていない限り、システムにはキーが含まれていません。たとえば、リモート通知をサポートしていないアプリの remoteNotification キーはシステムに含まれていません。
起動オプションキーのリストとそれらの処理方法については、UIApplication.LaunchOptionsKey を参照してください。
トピックス
起動時
アプリの起動シーケンスについて (About the App Launch Sequence)
アプリの起動時にシステムがあなたのコードを実行する順序を学びます。
アプリ環境の適切な構成を確認。
複数の起動の間でアプリの UI を保持 (Preserving Your App's UI Across Launches)
システムがアプリを終了した後、アプリを以前の状態に戻します。
以下も見よ
あなたのアプリのライフサイクルの管理 (Managing Your App's Life Cycle)
あなたのアプリが前景または後景にあるときにシステム通知に応答し、その他の重要なシステムに関連したイベントを処理します。
class UIApplication (UIApplication)
iOS で実行されているアプリの制御と調整の一元化されたポイント。
protocol UIApplicationDelegate (UIApplicationDelegate)
あなたのアプリの共有動作を管理するための一連のメソッド。
Scenes (Scenes)
あなたのアプリの UI の複数のインスタンスを同時に管理し、リソースをあなたの UI の適切なインスタンスに転送します。