ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Siriショートカットの導入
Siriショートカットは、SiriとAppの機能を連携させることを可能にする、iOS 12のパワフルな新機能です。この機能では、さまざまなコンテキストに応じて、適切なタイミングでSiriにショートカットを提案させることができるようになります。また、Siriショートカットは、iOS、HomePod、watchOSの音声入力とも連携させることができます。このセッションでは、NSUserActivityを使ってAppでショートカットを使えるようにする方法や、優れたユーザー体験のためにSiriKitでカスタムIntentを作成することのメリットについて紹介します。
リソース
- Deleting Donated Shortcuts
- Donating Shortcuts
- Learn more about SiriKit
- SiriKit
- Soup Chef: Accelerating App Interactions with Shortcuts
- プレゼンテーションスライド(PDF)
関連ビデオ
WWDC21
-
ダウンロード
(音楽)
(拍手) アリ・ワインスタインです 今日は ウィレム・マテラーと共に Siri Shortcutsを ご紹介します
2年前 最初のSiriKitを 発表しました Siriがアプリケーションと 連携して支払いをしたり メッセージを送信したり できるようになりました しかし 今年は もっと高性能な― Shortcutsを 発表したいと思います
Shortcutsの主な仕事は アプリケーションの主機能を Siriに開示することです これによりユーザは 今までと違った方法や場所で アプリケーションを使えます ユーザのエンゲージメントに 効果的な方法です
ショートカットの開示は 可能性を広げるのです ではShortcutsは どこで使えるのでしょう
Shortcutsの導入でSiriは ユーザの意図を把握し レベルの高い提案をします 検索中にもタイミング良く 提案がされます
Siri Shortcutsは Apple Watchでも使えます
Siriが必要と判断した時 ロック画面に 提案が表示されます ショートカットを タップすると すぐさまアプリケーションを 利用できます
また Siriに話しかけて ショートカットを 追加できます この場合も検索と同じ 画面が表示されます
アプリケーションは Siriを通じて 音声による 会話を提供できます Siriが音声でユーザに コーヒーができる時間を 教えてくれます
ショートカットを 追加する時は フレーズを選択します ショートカットを起動する 合い言葉を選べるのです デベロッパがこの フレーズを提案します この場合は “コーヒータイム”でしょう 追加したショートカットは 全てのiOSデバイスで 使えます Apple Watchや HomePodでも使えます
新しいShortcutsを使えば 誰でも独自のショートカット が作れます いくつかのステップを ドラッグするだけでよく アプリケーションに特化した ステップも入れられます
本日はShortcutsの 適用方法と 優れた提案のための 最適化についてご説明します また プライバシーの 問題についてと メディア再生に関しても お話しします
まず ShortcutsのAPIの 導入について説明します
ショートカット作成の 手順は3つ まずは ショートカットの定義です 開示したいショートカットを 定義して Siriにアプリケーションを 理解させます 次にショートカットを 提供します アプリケーションが 使用される度に それをシステムに 報告するのです Siriは報告を基に 提案を作ります 3つ目はショートカットの ハンドルです ユーザがショートカットを 使いたいとします その場合アプリケーションや Extensionが 適切に起動され 処理されなくてはなりません
ショートカットを 定義する前に まず何を開示するかを 決めます そのアプリケーションで 最もしたいことを 考えると簡単です それに関するものが 候補になります 開示するショートカットは ユーザをアプリケーションへ 直行させてくれるのです そのアプリケーションの 本来の機能を もっと迅速に利用できます 時間短縮は大幅でなくては なりません 普通に起動するのと 同じ速度では 意味がありません 時間の短縮にならない ショートカットだと 頻繁に提案されません またユーザが関心を持ち 何度も使うショートカットを 開示しなければなりません 数回しか使われない― ショートカットは 意味がありません
そして いつでも 実行できる必要があります 特定の環境下でのみ 利用できるものは 確実性に欠けます 開示するショートカットを 決定したら APIをチェックします
Shortcuts用のAPIは 2つあります 1つはNSUserActivity アプリケーションの機能を 簡単に伝えることができ SpotlightやHandoffと 連動します 2つ目はIntentです Intentはアプリケーションの 機能を詳細に伝えます SiriKitにはすでに 各種Intentが含まれていて アプリケーションと Siriの連動を助けます 今後はShortcuts用の カスタムIntentが 自分で定義できます
ショートカットを 開示する時は まずNSUserActivityか Intentかを選びます 判断基準を見てみましょう
NSUserActivityは 何かを開くなど 単純なショートカットに 向いています 例えば既にSpotlight検索で インデックスした ショートカットなどです または既にNSUserActivityに 提供したものなどもです
しかしShortcutsの 長所を有効利用するには Intentを使いましょう アプリケーションを 起動せずに使え カスタマイズした音声と インターフェイスも入れられ 後ほどウィレムが 説明しますが パラメータ予測もできます 方法を決定したら あとは実際に 実装してみましょう
まずはNSUserActivityを 使います 初めは ショートカットの定義です アプリケーションの Info.plistファイルで アクティビティタイプを 登録します
次にショートカットを 提供します 対象アプリケーションに対し 常に NSUserActivityオブジェクト を準備しておきます ここで重要なフラグが isEligibleForPrediction です 全てのアクティビティを ショートカットにします 既存の アクティビティについて このフラグを “true”にするだけです ショートカットが自動で 作成されます isEligibleForSearchも “true”にすれば isEligibleForPredictionが 有効になります isEligibleForHandoffは “true”がデフォルトのため そのままでアクティビティを デバイス間で共有できます
アクティビティを作る時は あとで使えるように userInfo辞書に 情報を入れましょう
次にUIViewControllerか UIResponderオブジェクトに アクティビティを追加し カレントにします
定義と提供が終わったら ハンドルします NSUserActivityを使うと 常にアプリケーションから 開きます そのためには continueUserActivityという AppDelegateのメソッドを 実装します まずアクティビティタイプが 正しいか確認します 正しかったら アクティビティ登録前の 状態に戻します
これでSiriが ショートカットを 提案できるようになりました
次はIntentを使った方法です まずショートカットを 定義します 最初にどのタイプのIntentを 使用するか決めます SiriKitには メッセージの送信など 様々なIntentが 含まれています ではXcodeでカスタムの Intentを定義しましょう 既に 作りたいショートカットが SiriKitのIntentにあれば それを使います なければ自分で定義できます 自分で定義する場合も 既存のものを使う時も まずXcodeで Intentの 定義ファイルを作ります 私はスープを注文する アプリケーションを 友人と開発しています Siriと連携して 簡単にスープを注文できます Intentエディタで Intentを作りましょう Xcodeで ファイルから新規を選び “Definition File”を 選択します するとIntentエディタが 表示されます 左下のプラスボタンを押して 開始します
まずIntentに名前を付けます 今回は “OrderSoup”とします
次にIntentのメタデータを 入力します ステップごとに 見てみましょう 最初は“カテゴリ”です カテゴリが定義されると SiriがIntentと連動します 今回は“Order”を 選びます これでSiriは “注文完了です”と言ったり 画面に“注文”と表示します Intentの目的に合う カテゴリを 選ぶのが良いでしょう 次はIntentの “見出し”と“説明”です 使えるショートカットが ここで分かります これは事前にユーザの同意を 得るかどうかを 決定するための チェックボックスです “注文しますか?”と Siriが尋ねれば 間違ってスープを注文する 心配がありません
次は“パラメータ”です ショートカットに渡す パラメータを定義します 今回は2つあります 注文された商品のリストと 配達場所です パラメータは 文字 数 人 場所などの情報を タイプ別に リスト化しています 作りたいパラメータが リストにない場合は “カスタムタイプ”を 選びます
次はショートカットの タイプです ユーザに提案したい タイプを全て定義します 各タイプには 予測される パラメータが入っています タイプを選ぶと パラメータに値が入り 見出しなどの表示が 決まります Shortcutsが背景で 実行されない場合 アプリケーションを 起動する必要がある場合は “Background”の チェックを外してください Intentに 複数のタイプが含まれ 一部だけ背景で 実行される場合があります Soup Chefが まさにそのケースです 注文の商品と場所の両方が 予測できた場合は 背景で実行されます しかし 配達場所だけが タイプに入っていると Siriは 情報が不十分と予測します その場合は 背景で実行させずに アプリケーションを開き ユーザに場所を尋ねます 関係する全ての ショートカットタイプを選び Siriが 予測しやすいようにします できれば 全てのショートカットが 背景で 作動するのが望ましいですね ユーザの利用が 迅速になることで より頻繁な提案がなされます
Intentには16のタイプを 設定できます 定義が終わると Xcodeは 自動的にIntentのクラスと Intent取り扱いプロトコルの コードを生成します 今回は“OrderSoupIntent”の クラスと “OrderSoupIntentHandling”の プロトコル プロパティはIntentの 定義ファイルのとおりです どのターゲットに対して コードが生成されたか 考慮する必要があります 矛盾する同じクラスを 選ばないためです では私のインスペクタで ターゲットを見てみましょう
全てのターゲットにIntentの 定義ファイルがあります Target Membership下の ボックスをチェックします フレームワークがある場合 複数のターゲットでコードを 生成しないでください Intentのクラスのみを 作るようにします “Intent Classes”を選び “No Generated Classes”を 他のターゲットに選びます アプリケーションに フレームワークがない場合 全てのターゲットを 調べる必要があります
そこでXcodeで カスタムIntentを定義します 定義が終われば 提供は簡単です Intentオブジェクトを インスタンス化し パラメータを入れINInteraction オブジェクトを提供します ユーザがショートカットを 使う度この操作を行います つまりユーザが スープを注文する度に Intentを提供し Siriの予測を助けるのです
あとは実際に ハンドルするだけです NSUserActivityと同様に continueUserActivity メソッドを使います IntentはNSUserActivityの オブジェクトとして渡され アクティビティタイプは Intentのクラス名になります ここでは “OrderSoupIntent”です continueUserActivityだけを 実装すると ショートカットは毎回 アプリケーションを開きます 背景で実行されず Siriとの連動がなく カスタムボイスも使えません Extensionを作ると 背景で ショートカットが使えます それにはXcodeで 新しいターゲットを作り Intents Extension テンプレートを選びます
そしてハンドラを プロトコルに対応させます ここでは OrderSoupIntentHandlingに 合わせて実装します 従来のSiriKitと違い Resolveメソッドは要りません Intentはカスタマイズせずに 使用可能だからです Intentのプロパティの値が 全て有効か確認します 値が無効で ハンドルできない場合は エラーコードを返します ハンドル時には ショートカットが起動します この場合はスープの注文です Responseオブジェクトに 注文の結果を返します
背景で実行される 全てのショートカットには Intents Extensionを 実装します そうすると アプリケーションを開かずに ロック画面や検索中に Shortcutsが使えます 背景で作動するものが 最も価値がありますが 他にも優れた ショートカットを作れます Intents Extensionを 実装する場合も continueUserActivityは 常に実装してください Siriのカードを タップしたりすることで ショートカットを 起動できるからです
ではINRelevantShortcutも ご紹介します Siriの文字盤で ショートカットを表示します これにはIntentか アクティビティを含む INRelevantShortcut オブジェクトを提供します ショートカットに 関連情報も入れられます 提案のタイミングを Siriの文字盤が 理解するヒントになります Watchのアプリケーション なしでも使えます iOSでショートカットを 開示すると Siriの文字盤にも すぐに表示されます ShortcutsとAPIの 説明が終わったので ウィレムと交代します XcodeでのShortcutsの 実装を説明します ウィレム (拍手) ありがとう アリ Shortcutsの 最初のデモができて光栄です Xcodeに行く前に まずSoup Chefの― アプリケーションを お見せします 画面に出します
これがSoup Chefです 開くと注文履歴が 表示されます まだ 注文履歴は空です プラスボタンを押し 注文します スープのメニューが 出てきました トマトスープにします
次に 数量とオプションを 選びます 赤トウガラシ入り トマトスープを1つ注文 “注文実行” ボタンを押します 履歴には注文した品が 表示されました 履歴から 注文の詳細も見られます これはアクティビティに リンクしています これをユーザに 提案しましょう 過去に頼んだおいしい スープを思い出せます
ユーザに提案するには Xcodeを使います
viewControllerで 注文の詳細を見ます ユーザアクティビティを作り requiredUserInfoKeysを 設定します EligibleForSearchも設定
EligibleForPredictionも 有効にします
では試してみましょう
まずアクティビティ情報を 提供するため
画面に戻ります 情報の提供を確認します デベロッパ向けの設定を 2つ追加しました 検索中でも 情報の提供を確認できます 追加には設定から デベロッパセクションに行き
“Display Recent Shortcuts”と “Display Donations on Lock Screen”をオンにします
ホームに戻り検索します 提供した情報が 表示されています (拍手) タップすると アプリケーションが開き 提供した注文情報が 再び表示されます
しかし機能は これだけではありません スープを注文するのが 目的なので ユーザにスープを 提案しましょう アプリケーションを 開かずに行うには Intentを使います 内蔵されたIntentは ありませんが iOS 12では カスタムIntentが作れます
まずIntentの 定義ファイルを作ります ファイルメニューから 新規ファイルを開き “SiriKit Intent Definition File”を選びます “次”をクリック 名前は Intentのままにして “Resources”のグループに 入れます “作成”を押して完了です
Intentエディタが 表示されました 正しいターゲットに 定義ファイルがあるか確認し 利用する全てのターゲットに Intentを入れます 共有フレームワークに 追加するので ターゲットに対し コードは生成しません “No Generated Classes”を ターゲットの隣で選びます 次にIntentを追加します 左下のプラスボタンから “New Intent”を選びます OrderSoupと名付けます
カテゴリは“Order”と入力 タイトルには “Order Soup”と書きます 説明には“Soup Chefの スープ注文”と記入
金銭取引が生じるので 注文前に確認します “User confirmation required”を選択します
次に3つのパラメータを 定義します 1つ目はスープ 2つ目は数量 3つ目はオプション まずスープです パラメータセクションの 名前に“soup”と入れて タイプを“Custom”と 選びます
次に 再度プラスを押して 名前に“quantity”を追加 “Integer”を選びます
次は“options”です これもタイプを“Custom”と 選びます 複数のオプションを 選べるので “Array”もチェックします
最後にショートカット タイプを定義します この時点で 全てのパラメータを含む 単一のショートカットを 定義します “Shortcut Types”で プラスボタンを押し 入れたいパラメータを 選びます “soup”と“quantity”と “options”です よければボタンを クリックします 見出しに“Order”と入れ “quantity”を挿入します そして“soup with options” 補足文は空のままです 必要な情報は見出しに 入れましたからね 背景でIntentを 実行したいので “Support background execution”はそのままです
最初のIntentが 定義できました 使ってみましょう 注文オブジェクトに2つの ヘルパーメソッドを追加し Intentとの変換を 容易にします
注文のクラスに行き 下段に注文のExtensionを 追加します Intentを戻す変数が 含まれています そこにIntentを作成します スープと数量 オプションを セットしIntentを返します ExtensionはIntentを示す 新しい初期化子も定義します スープと数量 オプションを抽出し これらの値で注文を 初期化します すごく役立ちそうです 次に 注文の度にIntentを 提供するようにします スープ注文の データマネージャーを開き
“placeOrder”メソッドで 提供ロジックを追加します
注文Intentを含む INInteractionを作成し 相互作用を 提供するだけです
最後にIntentをハンドルする 必要があります まずアプリケーションに サポートを追加します AppDelegateに行き “continueUserActivity”で サポートを追加します
“userActivity”のタイプが 実行したいクラス名と 同じか確認します 同じ場合はIntentを userActivityから取り出し 注文を生成します 最後に注文画面を 提示します Appを起動していますが 恐らくユーザは すぐに注文せず 先に カスタマイズしたいはずです それで注文画面を 提示しました
最後です Intentを背景で 実行できるよう Intents Extensionで サポートを追加します まずIntents Extensionを 追加するため “ファイル”“ ビュー ” “ターゲット”と進みます “Intetent Extension”を選びます “SoupChefIntents”と 名付け 終了をクリックします
Intentを使う新たな ターゲットを追加したので Intent定義ファイルが 含まれるようにします 定義ファイルに戻り ターゲットに追加します コードを生成したくないので “No Generated Classes”を 選択します
Extensionが同じ データにアクセスできるよう 同じアプリケーション グループに追加します プロジェクト設定で Intentターゲットを選び “Capabilities”で 同じグループに追加します"
これでターゲットに 作成された― Intentハンドラを 実装できます
最初に共有フレームワークを インポートします
“SoupKit”です
OrderSoupIntentを 実行するため Intentハンドラは その プロトコルに準拠させます
これはIntentの一部として 生成されました
このプロトコルには ハンドルメソッドがあります 実装しましょう
ハンドルメソッドで Intentを取得します Intentから注文を作成します 注文が成功すれば 成功コードを伴う Intentの応答で完了 もし作成できなければ 失敗コードと共に完了です 以上です 新しいIntentの サポートを追加したので 試しましょう
最初にIntentの提供のため 注文します プラスボタンを押して 今回はクラムチャウダーに クルトンを入れて注文します ホーム画面に― 提供したIntentがありました すばらしい (拍手) タップで ショートカット画面と 注文ボタンを表示 タップすると ボタンが背景に隠れ 注文完了 アプリケーションで 確認すると 新しい注文があります とても簡単です (拍手) 注文ボタンの代わりに ショートカット画面も使えます アプリケーションを ショートカットで起動し 注文画面を開きます カスタマイズできるので チーズを追加 注文します
できました 最後に Siriに追加しましょう
設定画面の “Siri & Search”です 追加したい ショートカットを選択します 注文はクルトン入り クラムチャウダー1つ
関連付ける フレーズを録音します
“スープの時間”
登録されました (拍手)
ここまでを 振り返りましょう NSUserActivityを 予測可能にすることから 始めました 提案を可能にし コンテンツの開示を 容易にします
次にカスタムIntentを 定義しました アプリケーションの主機能を 表現する最良の方法です 事例はスープの注文でした ユーザが注文する度に Intentを提供します 最後はIntentのハンドルです ExtensionとApp 両方をサポートしたので アプリケーションの起動が ショートカットでできます
Shortcutsの適用は 分かりましたね ここからは提案が どうなされるのか 提案を最良のものにする 方法を紹介します
アプリケーションは毎回 アクティビティを提供します システムは 時 場所 その他の信号を認識します
時と言えば1日の時間や 1週間の曜日です 場所であれば 全ての場所の中から ユーザにとって重要な 場所か確認します
提案のために どう活用しているのでしょう
ここでは時だけを考えます 月曜のランチはクルトン入り トマトスープ その夜は気分を変え 赤トウガラシ入りを注文
翌日のランチはまた クルトン入りです これを繰り返します すると金曜のランチに Siriは提案を試みます 過去の行動から パターンを探ります ランチにはいつも クルトン入りなのに気付き クルトン入りを提案します 私が望んだとおりです
かなり高いレベルですが どう機能するのでしょう 最初はNSUserActivityです
注文画面でのアクティビティ を想像してください userInfo辞書に 3つのキーがあります スープと数量 スクロール位置です Handoffを使ってユーザを 最後に使った正確な位置に 戻せます
どう提案されるか見ましょう
まずアクティビティを 提供します スープはトマト 数量は1です スクロール位置は79ポイント 次に似たような行動を 提供します 今回はスクロール位置を 110にします 続けると― ある時点でSiriが 提案しようとします
過去の行動から 同じ行動パターンを 見つけます でもスクロール位置に ムラがあるので 提案を見つけられません
ではどう解決するか
requiredUserInfoKeysを 使います これはアクティビティの 既存プロパティです アクティビティが表す状態に アプリケーションを― 復元する必要最低限の 情報を示します
パターンを探す際に 比較するのに使う― userInfo辞書のキーを 特定するのに使います 先ほどの例で見ます
requiredUserInfoKeysを スープと量に特定します 再度アクティビティを 提供します スープはトマトで数量は1 スクロール位置は79ポイント しかしスクロール位置は 無視されます 似た提供を行います またスクロール位置は 無視されます これを続けると ある時点でSiriが提案します アクティビティの一致する パターンを探します スクロール位置は 考慮されないので 次のように言えます “トマトスープ1つの NSUserActivityは” “ユーザに良い提案である”
今見たように 正しいキーの特定が 非常に重要です でないとユーザは提案を 得られません requiredUserInfoKeysの 機能を見ました Intentも同じですが より柔軟性が高いです
Intentへの主信号は定義した ショートカットタイプです 提案に有効なパラメータの 組み合わせを定義します
requiredUserInfoKeysに 似ていますが 違いは複数の 定義ができる点です
Soup Chefに適用します
OrderSoupIntentの定義では パラメータは3つ スープ 数量 オプションです ショートカットタイプは 単一でしたが 理想的にはもっと必要です ユーザの行動パターンを 探すのに選択肢が増えます 今回は3つの タイプを定義します 1つはスープと数量で 次はスープとオプション 最後は3つのパラメータ 全てです
別の例に適用しましょう
月曜のランチにクルトン入り トマトスープを注文 Soup Chefがこれを システムに提供します そしてショートカットタイプ に基づき 可能な組み合わせに分けます
その夜は赤トウガラシ入り を注文 これも同じように提供され 可能な組み合わせに 分けられます 翌日のランチには クルトン入りを注文 同様に分けられます 1週間続けると 金曜のランチに Siriが提案します トマトスープの注文が 多いと―
認識するでしょう またランチにはいつも クルトン入りだと 分かるでしょう
より詳細なショートカット なので提案が容易です たぶんクルトン入りの注文を 提案するでしょう このように提案されるのです ここからは良い提案を させる方法を説明します 全ては良い提供からです
良い提供は繰り返される 可能性が高いのです ユーザがよく見る コンテンツや Intentでは 定期的に取る行動です
また提供するペイロードが 一貫してないと パターンを見つける際に 比較ができません
良い提供はタイムスタンプを 含みません 提案時点の時間は 関係なさそうだからです
例えば 特定の日の予定を教える ショートカットは無意味です 翌日にそれを見ても 終わった会議には 関心がわきません しかし相対的時間は より役立ちます
ユーザの行動1つにつき 1つの提供をすべきです アプリケーション内での 多様な行動に対してもです
Intentの正しいパラメータの 選択も重要です 2つのタイプを見ます 最初はenumです
Intent定義ファイルに enumを定義し パラメータのタイプとして 使います
パラメータの値が 制限される場合― enumがお薦めです スープ注文のIntentで サイズを追加する場合 enumが合理的です 可能なサイズはSML ぐらいですから
enumを使うと より良い提案や 明解な見出し 補足文につながります enumでの見出しなどの 生成法は Localizationの セッションで学べます
もう1つは カスタムタイプです INObjectと生成された Intentコードをもたらします INObjectは識別子と 表示文字列を結合します
この識別子でオブジェクトを 参照できますが 表示文字列には判読可能な 部分が含まれます ユーザもアプリケーションも パラメータの値を 常に把握できます
INObjectの使用で パラメータ間の 依存も防げます 説明します
識別子と表示文字列の 組み合わせを表す― 2つの方法があります 2つのパラメータを Intentに追加できます 識別子と表示文字列に 1つずつです INObjectを使えば単一の パラメータを追加できます
最初の方法では表示文字列が 識別子により参照される オブジェクトに依存します Intentの提案の際に 問題が起きないよう 依存関係をなくします
優れたショートカットには 分かりやすい見出しや 画像があります 体験する前に見る 唯一のものなので タップしたとき何が起こるか 表すべきです もちろん期待どおりに動くか テストした方がいいでしょう テスト方法です
追加した2つの デベロッパ向けの設定では 検索とロック画面で 提供を確認できます Siri Suggestionsの 代わりです これで提案した時の 表示内容が分かり 期待どおりの動作を 確実にできます
もう1つの方法はSiriに ショートカットを追加します Xcodeスキームを編集して 自動的にSiriを呼び出す 簡単なテスト法です
スキームエディタ内の Siri Intent Queryで Siriを呼び出す言葉を 作成します
これでShortcutsの アプリケーションに カスタムショートカットが 作成できます
他のショートカットや ステップと連鎖した時の 動作確認ができます
優れたショートカットの 提供とは何か ユーザへの提案の仕方を 見てきました 次にプライバシーの考察です ユーザを 動揺させない提案をします
削除したものは永遠に 消えるとユーザは考えます これは信頼のために 尊重すべきです ユーザと無関係になった 提案はしないことです ユーザが削除できる情報が 含まれている場合 適切な時期に確実に 提供を削除します NSUserActivityでの提供の 削除方法です
削除の方法は2つあります Spotlightインデックスを 使用し relatedUniqueIdentifier を設定します Spotlightからコンテンツを 削除するだけで 自動的にアクティビティが 削除されます
contentAttributeSet上の relatedUniqueIdentifierを 合致する検索可能項目の 識別子に入れます 検索可能項目が削除されれば アクティビティも 削除されます
Spotlightのインデックスを 使わない場合 NSUserActivity上の 永久識別子を使います これは新しいプロパティです アクティビティを追跡でき 適切な時に削除できます
使う場合はアクティビティの 提供前に入れます 削除したい識別子で deleteSavedUserActivities を呼びます 全てのアクティビティの 削除もできます 例えばユーザが ログアウトした時は “deleteAllSavedUserActivities” を呼び出します
Intentの既存のAPIは 新しいアクティビティAPIに 似ています
INInteractionを介して 主要な提供Intentも 発生します
INInteractionには識別子と グループ識別子があり 提供された相互作用を複数 削除できます
提供の前に識別子を 設定しておきます 削除したい時は 削除する識別子の配列で “delete”を呼び出します 共有グループ識別子を持つ Intentを全て削除するには グループ識別子で “delete”を呼び出します 最後にNSUserActivity同様 Intentを全て削除するには “INInteraction”で “deletAll”を呼び出します
適切な時に 提供を削除してください それで最適な提案が生まれ 関係のない提案で ユーザに疑問を与えません
ショートカットの作成と 提案に関し検討してきました 最後に最良のメディア ショートカット作成に 使用するものを見ましょう
Shortcutsに最適な Intentを作成しました INPlayMediaIntentと 呼ばれ AV再生のショートカットを 作成し提供します
ExtensionでIntentを 実行する時 背景での実行を選択できます これでアプリケーションから 直接再生できます
検索画面やロック画面で 提案されます ヘッドフォンを接続したとき 再生コントロールにも Intentのショートカットが 表示されます コンテンツ再生が更に 簡単です
そしてHomePodで うまく機能します
Siriに再生のメディア ショートカットを追加し HomePodで呼び出すだけです HomePod経由でiPhoneから 再生されます
興味のあるコンテンツを システムに伝える― 新しいAPIも作成しました
定期配信コンテンツに 適しています ユーザに提案したいのは 初めて体験する コンテンツです
優れたメディア ショートカットにするため これらの機能を追加しました では まとめましょう
Shortcutsはアプリケーション をパワフルにします アプリケーションを開示して ユーザを巻き込む 新たな方法を提供します ロック画面 Siriの文字盤 Siriの文字盤 Siri自体でも活用しましょう 新しいアプリケーションでも
Shortcutsは NSUserActivityによって コンテンツを簡単に 開示できます またIntentの使用で よりシステムと 深く統合できます ユーザに全く新しい 体験を提供します (拍手) 詳細はこちらのURLで ご覧ください セッション211です 今週はずっとラボにいます ありがとう 皆さんのショートカットを 早く見たいです 引き続き楽しんでください (拍手)
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。