記事


あなたのアプリの起動への対応

(Responding to the Launch of Your App)


アプリのデータ構造を初期化し、あなたのアプリを実行する準備をして、システムからの起動時の全てのリクエストに応答します。





概観


ユーザがホームスクリーンであなたのアプリのアイコンをタップすると、システムはあなたのアプリを起動します。あなたのアプリが特定のイベントをリクエストした場合、システムはそれらのイベントを処理するためにバックグラウンドであなたのアプリを起動することもあります。シーンを基礎としたアプリの場合、あなたのシーンの 1 つをスクリーン上に表示したり、何らかの作業を行ったりする必要があるときに、システムは同様にアプリを起動します。


すべてのアプリには、UIApplication (UIApplication) オブジェクトが表すプロセスが関連しています。アプリにはまた、そのプロセス内で発生する重要なイベントに応答する アプリデリゲートオブジェクトUIApplicationDelegate (UIApplicationDelegate) プロトコルに準拠するオブジェクト) もあります。 シーンを基礎とするアプリでさえ、アプリデリゲートを使用して起動や終了などの基本的なイベントを管理しています。起動時に、UIKitUIApplication オブジェクトとあなたのアプリデリゲートを自動的に作成します。次に、これはアプリのメインイベントループを開始します。


起動ストーリーボードの提供


ユーザが最初にデバイス上でアプリを起動すると、アプリが UI を表示する準備ができるまで、システムは起動ストーリーボードを表示します。起動ストーリーボードを表示すると、あなたのアプリが起動して何かを実行していることがユーザに保証されます。あなたのアプリが自身を初期化し、UI をすばやく準備する場合、ユーザは起動ストーリーボードを短時間しか見ない可能性があります。


Xcode プロジェクトには、カスタマイズできるデフォルトの起動ストーリーボードが自動的に含まれ、必要に応じてもっと起動ストーリーボードを追加できます。あなたのプロジェクトに新しい起動ストーリーボードを追加するには、以下の手順を実行します。


  1. Xcode であなたのプロジェクトを開きます。

  2. [File(ファイル)] > [New(新規)] > [File(ファイル)] を選択します。

  3. あなたのプロジェクトに起動スクリーンリソースを追加します。

あなたの起動ストーリーボードにビューを追加し、自動レイアウト制約を使用して、基になる環境に適応するようにビューのサイズと位置を設定します。UIKit は、あなたの制約を使用してビューを使用可能なスペースに合わせて、あなたの提供したものを正確に表示します。設計ガイダンスについては、ヒューマンインターフェイスガイドライン を参照してください。

重要

あなたの起動スクリーンには静止イメージを使用しないでください。iOS 14 以降では、起動スクリーンは 25 MB に制限されています。


あなたのアプリのデータ構造体を初期化


アプリの起動時の初期化コードを以下のいずれかまたは両方のメソッドで配置して下さい。


  • application(_:willFinishLaunchingWithOptions:)

  • application(_:didFinishLaunchingWithOptions:)

  • UIKit は、あなたのアプリの起動サイクルの開始時にこれらのメソッドを呼び出します。それらを使用して:


  • あなたのアプリのデータ構造体を初期化します。

  • あなたのアプリに実行に必要なリソースがあることを確認します。

  • あなたのアプリを初めて起動するときに、1 回限りの設定を実行します。たとえば、書き込み可能なディレクトリにテンプレートやユーザが変更可能なファイルをインストールします。あなたのアプリの一回限りの設定の実行 (Performing One-Time Setup for Your App) を参照してください。

  • あなたのアプリが使用する重要なサービスに接続します。たとえば、あなたのアプリがリモート通知をサポートしている場合は、Apple プッシュ通知サービスに接続します。

  • あなたのアプリが起動した理由の情報については、起動オプション辞書を確認してください。あなたのアプリが起動した理由を確認する をご覧下さい。

  • シーンを基礎にしていないアプリの場合、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,

    CLLocationManagerDelegate {


    let locationManager = CLLocationManager()

    func application(_ application: UIApplication,

    didFinishLaunchingWithOptions launchOptions:

    [UIApplicationLaunchOptionsKey: Any]?) -> Bool {


    // If launched because of new location data,
    // start the visits service right away.

    if let keys = launchOptions?.keys {

    if keys.contains(.location) {

    ocationManager.delegate = self

    locationManager.startMonitoringVisits()

    }

    }


    return true

    }
    // other methods…

    }


    あなたのアプリが対応する機能をサポートしていない限り、システムにはキーが含まれていません。たとえば、リモート通知をサポートしていないアプリの remoteNotification キーはシステムに含まれていません。


    起動オプションキーのリストとそれらの処理方法については、UIApplication.LaunchOptionsKey を参照してください。



    トピックス




    起動時


    以下も見よ





    目次
    Xcode の新機能


    テクノロジー

    UIKit


  • 概観
  • トピックス
  • 以下も見よ












  • トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ