WWDC Quick Look 💓 By SwiftGGTeam
Integrate your app with Wind Down

Integrate your app with Wind Down

元の動画を見る

ハイライト

iOS 14ではヘルスケアアプリの睡眠機能が大幅にアップグレードされ、Wind Down(スリープモード)の概念が導入されました。ユーザーは就寝時間を設定でき、システムは就寝の少し前に自動的にWind Down状態に入り、画面が暗くなり、通知がミュートされ、ユーザーが選択した「リラクゼーションアクティビティ」に関連したアプリが推奨されます。


主要内容

私が最も恐れているのは、就寝前のルーティンがまた一歩増えることです。ユーザーは休憩をとる準備ができています。ユーザーが電話のロックを解除し、アプリを検索し、瞑想、日記、またはホワイト ノイズのページに入る必要がある場合、この操作自体が Wind Down を中断します。iOS 14 のヘルスケア アプリは、睡眠設定をシステムレベルのプロセスに拡張します。ユーザーは睡眠スケジュールを設定した後、おやすみ中にロック画面から選択したショートカットを直接実行できます。

このセッションでは、開発者がこのポータルに参入する方法について説明します。Apple はこれらのエントリを「Wind Down Shortcuts」と呼んでいます。それらはアプリの意図から、またはNSUserActivity。開発者が最初にしなければならないことは、アプリ内のどのアクションが就寝前に本当に適切であるかを判断することです。睡眠瞑想の開始、リラックスできるサウンドスケープの再生、夜の日記の作成、柔らかな照明の設定はすべてそのシーンに適しています。ランニングの準備運動や会議の開始には適していません。

システム推奨事項を入力した後のアクションは、簡単に認識できるものでなければなりません。Wind Down のロック画面のスペースは非常に小さく、ユーザーに表示されるのは短いショートカット名だけです。セッションで繰り返し強調されたsuggestedInvocationPhrase, なぜなら、この文は Siri の音声トリガー フレーズであり、ショートカットを説明するロック画面上のテキストでもあるからです。良いフレーズは短く、具体的で、同じアプリ内の異なるアクションを区別できるものである必要があります。

詳細

1. 使用するshortcutAvailability就寝時間カテゴリにフラグを付ける

(02:38) 終了への入り口は、アプリ全体ではなく、アプリ内の特定のアクションに対するものです。session は、メイン メソッドがインテントであることを明確に示しています。次のようなシステムの組み込みインテントを使用できます。INCreateNoteIntent、カスタム インテントを定義することもできます。インテントが完了したら、新しいインテントを設定しますshortcutAvailability財産。

03:14shortcutAvailability同時に存在するINIntentそしてNSUserActivity。これは、このアクションが終了セットアップ フローのどのカテゴリに該当するかをシステムに伝えます。スピーチでは、瞑想アプリはマインドフルネスを使用でき、メモや天気アプリはPrepare for Tomorrowを使用でき、ホワイトノイズアプリは睡眠音楽を使用でき、ヨガアプリはヨガとストレッチを使用できます。

import Intents

let intent = INPlayMediaIntent(
    mediaItems: nil,
    mediaContainer: nil,
    playShuffled: nil,
    playbackRepeatMode: .unknown,
    resumePlayback: nil,
    playbackQueueLocation: .unknown,
    playbackSpeed: nil,
    mediaSearch: nil
)

intent.shortcutAvailability = [.sleepMusic]
intent.suggestedInvocationPhrase = "Play Counting Sleepy Dinosaurs"

キーポイント:

  • INPlayMediaIntentトランスクリプトの Bedtime の例に対応し、オーディオの再生を開始するために使用されます。
  • .sleepMusic04:46 で説明されている睡眠音楽オプションに対応しており、ホワイト ノイズ、就寝時の音楽、リラックスできるサウンドスケープに適しています。
  • suggestedInvocationPhrase07:36 と 10:19 の説明に対応して、システムはロック画面のショートカット名として使用します。
  • セッションの焦点は終了マークであるため、ここでは実際のメディア アイテムは構築されません。メディアの検索と再生の詳細については、引き続き SiriKit Media Intents 関連のセッションを参照してください。

2. 使用するINVoiceShortcutCenter重要なアクションを積極的に推奨する

(04:35) Bedtime の例への最初のパスは提案です。アプリがインテントとセットを作成するshortcutAvailability、次のようにパッケージ化されていますINShortcut、そして通過しますINVoiceShortcutCentersetShortcutSuggestionsシステムにお任せください。このようにして、ユーザーがヘルスケア アプリで「Wind Down」を設定すると、このアクションが「音楽」カテゴリに表示されるようになります。

(06:07) セッションの特別なリマインダー: アプリのアクション リストが変更された場合は、再度呼び出す必要がありますsetShortcutSuggestions。このようにして、最も関連性の高いアクションのみが終了設定プロセスに表示されます。

let shortcut = INShortcut(intent: intent)

if let shortcut {
    INVoiceShortcutCenter.shared.setShortcutSuggestions([shortcut])
}

キーポイント:

  • INShortcut(intent:)これは、インテントをシステムで表示できるショートカットに変換するパッケージ化の手順です。
  • INVoiceShortcutCenter.sharedトランスクリプトの共有プロパティに対応します。
  • setShortcutSuggestions「今日のサウンドスケープを再生する」など、アプリが常にユーザーに発見してもらいたい中心的な就寝時のアクションを配置するのに適した場所です。
  • 提案の値は制御可能です。開発者は、特定のアクションが終了設定に表示されるようにすることができます。

3. 実際の使用中に寄付し、システムにユーザーの好みを学習させます

(06:32) 2 番目のパスは寄付です。ユーザーがアプリを日常的に使用する際にアクションを実行すると、アプリはこのインテントまたはユーザー アクティビティをシステムに提供します。システムはこれを使用して、このユーザーにとってどのアクションがより重要であるかを理解し、それらを終了設定、検索、ロック画面の提案などの場所に配置します。

(07:58) スピーチで示されたインテント寄付プロセスは次のとおりです: インテントの初期化、設定shortcutAvailability、設定suggestedInvocationPhrase、次のようにパッケージ化されていますINInteraction、最後に電話しますdonate

let playedTrackIntent = intent
playedTrackIntent.suggestedInvocationPhrase = "Play Counting Sleepy Dinosaurs"

let interaction = INInteraction(intent: playedTrackIntent, response: nil)
interaction.donate { error in
    if let error {
        // 在真实 App 中记录 donation 失败,避免静默丢失系统推荐机会。
        print(error)
    }
}

キーポイント:

  • 寄付は、ユーザーがホワイト ノイズ トラックの再生などのアクションを実際に実行した後に発生する必要があります。
  • INInteractionはインテント寄付のコンテナであり、トランスクリプトの 08:30 で明示的に言及されています。
  • フレーズにはトラック名を使用できるため、ロック画面に表示されるテキストは「サウンドを再生する」よりも識別しやすくなります。
  • 寄付と提案は同時に行う必要があります。提案によりコアアクションが確実に表示され、寄付はシステムが個人の好みを学習するのに役立ちます。

4. 使用するNSUserActivity非意図的なアクションのサポート

(08:39) アプリが使用されている場合NSUserActivity特定のアクションを表現するために、Wind Down を実行することもできます。セッションによって与えられる順序は次のとおりです。ユーザー アクティビティの初期化、検索対象および予測対象の設定、タイトルの設定、設定suggestedInvocationPhraseそしてshortcutAvailability、最後にビューコントローラーに割り当てますuserActivity物件完成寄付。

let activity = NSUserActivity(activityType: "com.example.bedtime.journal")
activity.isEligibleForSearch = true
activity.isEligibleForPrediction = true
activity.title = "Night Journal"
activity.suggestedInvocationPhrase = "Open Night Journal"
activity.shortcutAvailability = [.sleepJournaling]

viewController.userActivity = activity

キーポイント:

  • isEligibleForSearchそしてisEligibleForPredictionトランスクリプトの 08:44 の要件に対応します。
  • titleそしてsuggestedInvocationPhraseどちらもシステム表示に影響し、Siri トリガーにも使用されます。
  • .sleepJournalingWind Down のジャーナリング シーンに対応し、ジャーナリング、気分の記録、就寝前のレビューに適しています。
  • viewController.userActivity = activityこれは講演の中で言及された寄付方法であり、既存のページの行動に適しています。

5. フレーズはロック画面スペース用にデザインする必要があります

09:02suggestedInvocationPhrase装飾的なフィールドではありません。このセッションは、アプリのショートカットに名前を付けるために使用され、終了中にロック画面にも表示されることを明示的に示しています。ロック画面のスペースは限られているため、フレーズは短く具体的である必要があります。

(09:37) ベッドタイムの​​例は、「眠そうな恐竜を数えて遊ぶ」です。ユーザーがアプリ内の他のサウンドと区別できるように、特定のトラック名が含まれています。反例は「サウンドの再生」です。これは一般的な名前すぎて、何が再生されるのかをユーザーに正確に伝えることができません。

intent.suggestedInvocationPhrase = "Play Counting Sleepy Dinosaurs"

キーポイント:

  • 特に同じアプリが複数の就寝前のコンテンツを公開する場合、フレーズはアクションを一意に識別できる必要があります。
  • 冗長な単語を削除して、Wind Down ロック画面の切り詰めを回避します。
  • 音楽トラック、瞑想セッション、日記テンプレート、就寝時間リストなど、ユーザーが認識できるオブジェクトの名前を使用します。
  • このフレーズは提案パスと寄付パスの両方に設定する必要があります。

重要ポイント

1. 就寝時のサウンドスケープの入り口を作る

やるべきこと: アプリのホワイト ノイズ、就寝時の音楽、またはリラックスできるストーリーを「おやすみ」ショートカットに変更します。

実行する価値がある理由: 就寝時のセッション使用例INPlayMediaIntentサウンドスケープを開始して使用します.sleepMusicWind Down の Music カテゴリに入れてください。

開始方法: まず、最もよく使用されるオーディオ トラックを選択し、作成しますINPlayMediaIntent、設定.sleepMusic短いフレーズを使用する場合は、INVoiceShortcutCenter.shared.setShortcutSuggestionsシステムにさらされています。

2. 夜の日記に簡単に記入します

対処法: ユーザーが夜の日記、気分記録、または就寝時間のレビュー ページをロック画面から直接開けるようにします。

実行する価値がある理由: トランスクリプトには、健康設定プロセスにおける 1 日目のジャーナリングの例が示されています。NSUserActivity設定にも対応shortcutAvailability

開始方法: ジャーナル ページを作成するNSUserActivity、設定isEligibleForSearchisEligibleForPredictiontitlesuggestedInvocationPhraseそして.sleepJournaling、そして現在のビューコントローラーにバインドします。

3. 「明日に備える」リストを作成する

やるべきこと: 寝る前に、明日の重要なこと、天気、最初の会議、旅行のリマインダーを表示します。

実行する価値がある理由: メモや天気などのアプリを「明日の準備」シーンに組み込むと、「Wind Down」はリラックスするだけでなく、次の日への準備にも役立つことがわかります。

開始方法: 「明日のレビューの概要」をインテントまたはユーザー アクティビティに組み込み、「明日のレビュー」というフレーズを使用し、ユーザーがスケジュールを頻繁に確認した後に寄付を行います。

4. 就寝前のストレッチや瞑想のリトリートを行う

やるべきこと: 通常の長さの就寝前のヨガ、呼吸法、または瞑想のクラスを「Wind Down」に組み込みます。

実行する価値がある理由: このセッションは、就寝前に適したリラクゼーションのためのヨガと、就寝前には適さないウォームアップ ランニングを明確に区別します。開発者は、眠りにつくのに本当に役立つアクションを選択する必要があります。

開始方法: アプリ内の最も軽いコースから開始し、マインドフルネスまたはヨガとストレッチのカテゴリーを設定し、一般的な「セッションを開始する」の代わりにコース名としてフレーズを書き込みます。

関連セッション

コメント

GitHub Issues · utterances