就寝準備ショートカットを始める

就寝準備では、心を落ち着かせる音、心地よいオーディオストーリー、瞑想セッションなどへの手軽なアクセスが提供され、ユーザーは眠りにつく準備を整え、一日の始まりに向けて備えることができます。Appで就寝準備ショートカットを有効にすると、それらの機能への素早いアクセスを提供でき、ユーザーは夕方のルーティンに役立つ機能を手軽に利用することができるようになります。

就寝準備ショートカットの紹介

iOS 14のスリープ機能の一環として、ユーザーは、ヘルスケア Appのスリープ設定フローから就寝準備のショートカットを作成し、就寝準備が有効なときにロック画面に表示したい特定のショートカットを追加することができます。これらのショートカットは、ショートカットAppのスリープモードコレクションからも設定できます。このコレクションは、ユーザーが最初の就寝準備ショートカットを追加すると表示されます。また、既存または新規のショートカットをスリープモードコレクションに追加したい場合は、ショートカットApp内のショートカットの詳細表示で、「スリープモードで表示」スイッチをオンにすることで行うことができます。

また、ユーザーがスリープモードに関連するショートカットアクションを見つけやすくするために、就寝準備APIを使用して、就寝準備の設定フローでAppからのIntentを紹介することができます。

サンプルプロジェクトで「就寝準備ショートカット」を探る

AppのIntentをWind Downショートカットとして表示する方法の詳細については、WWDC20のビデオ「就寝準備をAppに組み込む」をご覧ください。このビデオでは、就寝準備の機能の概要、および参考用にサンプルコードプロジェクトを紹介しています。サンプルコードプロジェクトでは、就寝準備の実装方法を紹介し、新しい機能が既存のプロジェクトにどのように統合されるかを理解することができます。


注:Xcodeおよびサンプルコードプロジェクトのほか、スリープモードを存分に楽しめるユーザーエクスピリエンスを模索、テストするには、iPhoneまたはiPod touchが必要です。詳しい設定方法については、サンプルプロジェクトのREADMEをご覧ください。サンプルのショートカットは、サンプルプロジェクトをビルドしてテストデバイスで初めて実行すると、スリープモード中にヘルスケアAppに表示されます。


プロジェクト内で、「SoundLibraryDataManager+Intents.swift」という名前のファイルにある関数「updateBedtimeShortcutSuggestions」をご確認ください。この関数は、ユーザーが再生したいおすすめのサウンドスケープのショートカットを定義し、「INVoiceShortcutCenter」に追加します。これにより、システムは、ヘルスケアAppなど、適切なタイミングでこれらのショートカットを提供できるようになります。

次のように、可用性情報をIntentに追加できます。

playMediaIntent.shortcutAvailability = .sleepMusic

これは、就寝準備ショートカット選択内のショートカットのカテゴリーを示します。

「sleepMusic」値は、睡眠時のサウンドスケープや就寝時の音楽、耳鳴りの軽減などのオーディオを提供するAppに適しています。値が存在する場合、このIntentは、スリープエクスペリエンスのセットアップ中に就寝準備のMusicのエリアに表示されます。

この値の詳細や、他の利用可能な就寝準備の値については、Xcodeのインラインドキュメントを参照してください。

1.サンプルコード内の「.sleepMusic」を選択します。 2.Controlキーを押しながらクリックする、または右クリックしてコンテキストメニューから「クイックヘルプを表示」を選択すると、その値についての詳細が表示されます。 3.SwiftとObjective-Cの両方で利用可能な「INShortcutAvailabilityOptions」ドキュメントページを選択して、利用可能なオプションをプレビューしてください。

Intentのその他の値は次のとおりです。

  • sleepMindfulness
  • sleepJournaling
  • sleepPodcasts
  • sleepReading
  • sleepWrapUpYourDay
  • sleepYogaAndStretching

インテントが別のカテゴリー内でどのように表示されるかを確認するには、「.sleepMusic」をその他の値に置き換えて、Appを再度実行します。サンプルAppをビルドして実行すると、このコードを使用して、更新されたIntentがシステムに提供されます。 INVoiceShortcutCenter.shared.setShortcutSuggestions(newMediaIntents)

これで、ヘルスケアAppを再起動してスリープの設定画面を表示すると、Intentは選択した新しいカテゴリーの下に表示されます。注意:Appで就寝準備ショートカットオプションを提供する場合は、提供するIntentに合わせて最適な値を選択してください。(また、アドレナリンが出るようなゲームなど、日中の使用を想定して作成されているAppの場合は、スリープモード用のIntentをDonate処理する必要はないかもしれません。)

IntentをDonate処理する また、サンプルプロジェクトでは、AppがIntentをDonate処理する方法についても紹介しています。TrackTableViewController.swiftの「play(tracks:)」関数をご覧ください。サンプルAppでは、メディアがApp内で直接再生されるたびに、この関数が呼び出されます。

「PlayRequest」初期化子は、「.sleepMedia」可用性オプションを使用してIntentを作成します。その後、「donatePlayRequestToSystem()」は、そのIntentを使用してシステムに 「INInteraction」をDonate処理します。

private func play(tracks: [Track]?) {
        let request = PlayRequest(container: libraryContainer, tracks: tracks)
        SoundLibraryDataManager.shared.donatePlayRequestToSystem(request)
        
        if let itemsToPlay = AudioPlaybackManager.shared.resolveItems(for: request) {
            AudioPlaybackManager.shared.play(itemsToPlay)
        }
    }

注:サンプルプロジェクト内の「BedtimeIntents」ターゲットにアクセスすると、Supported Intentsセクションに「INPlayMediaIntent」も定義されていることがわかります。

Donating Shortcuts

コードを独自のものにする ここまでで、サンプルAppが就寝準備とスリープエクスペリエンスのIntentを使用する方法をご紹介しましたので、引き続きアプリを変更して実験することができます。たとえば、サンプルプロジェクトに含まれているオーディオファイルの代わりに、Media Playerフレームワークを使用して人のライブラリ内のすべてのものを再生できます。薬を飲んだり歯を磨いたりするためのチェックリストなど、他の就寝準備アクティビティのIntentを追加することもできます。プロジェクトの「Supported Intents(サポートされているIntent)」セクションに新しいインテントタイプをリストすることを忘れないでください。

Creating an Intents App Extension

デザインを掘り下げる

就寝準備ショートカットのIntentを作成するときには、ユーザーのデバイスに作成したIntentがどのように表示されるかを考慮することが大切です。ほとんどのユーザーにとって、ショートカットは、ロック画面上で他の複数のショートカットと一緒に表示されます。そのため、Intentに名前を付けるときには、簡潔かつ説明的にするようにしてください。次の質問が、簡単なヒントとなります。このショートカットを実行するとどうなりますか?なぜ、就寝時のルーティンに取り入れたいと思うのでしょうか?

HIG - iOS - Shortcuts and Suggestions

...すべてのユーザーに、良い夜を

就寝準備ショートカットに質の高いIntentを提供することで、ユーザーが睡眠ルーティンの一部としてAppを使用するきっかけを作ることができます。これらのIntentを実装すると、ウィジェット、スマートスタック、ショートカットAppなどの他のラーニングテクノロジーと連携して、より正確な表示を実現し、Appのユーザーエクスピリエンスを向上させ、ユーザーの日常生活や寝る前の習慣の質を向上させることができます。

Resources

Learn more about integrating your app with Wind Down

Adding Shortcuts for Wind Down

Creating an Intents App Extension

Adding User Interactivity with Siri Shortcuts and the Shortcuts App

INShortcutAvailabilityOptions

Feature your actions in the Shortcuts app

Design for intelligence

Siri, Shortcuts, and SiriKit