SiriKit

ユーザーがSiriまたはマップで、Appのサービスに対して行ったリクエストを処理します。

概要

SiriKitに含まれるIntentsとIntents UIのフレームワークを使い、サービスをSiriおよびマップに統合するApp Extensionを実装します。SiriKitは、2種類のApp Extensionをサポートします。

  • Intents App ExtensionはSiriKitからユーザーのリクエストを受け取り、App固有のアクションに変換します。たとえばユーザーは、Appでのメッセージ送信、配車予約、ワークアウトの開始などをSiriに頼むことができます。

  • Intents UI App Extensionは、Intents App Extensionがユーザーのリクエストを実行した後、Siriまたはマップのインターフェイスにブランディングやその他のカスタマイズされたコンテンツを表示します。このExtensionの開発は任意です。

図1

Siriとマップからサービスを利用できるようにする

Siriとマップからサービスを利用できるようにする

SiriKitは、ユーザーが要求できるリクエスト(Intentと呼びます)のタイプを定義します。ドメインは関連するIntentをグループ化したもので、AppでどのIntentをサポートするかを明確にします。たとえば、「メッセージ」ドメインには、メッセージ送信、メッセージ検索、メッセージを既読/未読としてマーク、の各Intentが含まれます。

App Extensionが直接ユーザーとやり取りすることはほとんどありません。通常、ユーザーとのやり取りはすべてSiriとマップが処理し、Appからの情報提供が必要な場合のみExtensionを呼び出します。Siriとマップに表示される情報をカスタマイズするため、Intents UI App Extensionを提供できますが、これは任意です。

トピック

最初のステップ

SiriKitの使用許可要求

SiriとマップがAppのIntents App Extensionとやり取りできるよう、ユーザーに許可を求めます。

Siriエンタイトルメント(英語)

AppがSiriのリクエストを処理するかどうかを示すブール値です。

キー: com.apple.developer.siri

Siri Intents

Intents App Extensionは、ユーザーがSiriとマップで行ったリクエストに対し、Appのレスポンスを提供します。

Intents App Extensionの開発

XcodeプロジェクトでIntents App Extensionを追加および構成します。

App Extensionをサポートするためのコード構成

バックエンドサービスをプライベートフレームワークに移動し、AppとApp Extensionがサービスを使用できるようにします。

Intentを適切なhandlerオブジェクトに振り分ける

SiriKitに、特定のIntentを処理できるオブジェクトを提供します。

Intentのリゾルブとハンドル

Appのサービスに対するユーザーリクエストをリゾルブ、コンファーム、ハンドルします。

protocol INIntentHandlerProviding(英語)

Intentを処理するカスタムオブジェクトにIntentを振り分けるインターフェイスです。

Extension関連のクラス(英語)

Intents Extensionのビルドに使用するクラスについて説明します。

ショートカット

SiriショートカットとショートカットAppによるユーザー操作の追加

カスタムのIntentおよびパラメータを追加して、ユーザーがSiriやショートカットAppを使ってよりすばやく効率的に操作できるようにします。

ショートカットのドネート(donate、提供)

ユーザーがAppで実行したアクションを行うショートカットを、Siriにドネートします。

ドネートしたショートカットの削除

ドネートした情報をSiriから削除します。

Soup Chef:ショートカットによる迅速なApp操作(英語)

Appのアクションを行うショートカットを提供することによって、ユーザーがSiriでAppを簡単に使えるようにします。

ショートカットの管理(英語)

ユーザーがSiriにショートカットを追加できるようにします。また、Appからユーザーにショートカットを提案します。

関連するショートカット(英語)

Apple WatchのSiriの文字盤にショートカットを表示します。

enum INShortcut(英語)

システムがユーザーに提案したり、ユーザーがSiriに追加したりできる、Appで利用可能なアクションです。

class INObject(英語)

カスタムのIntentパラメータを表すオブジェクト。

Siriのイベント提案

Siriのイベント提案

予約に関連する、現在、実行可能な情報をユーザーに提供します。

Siriドメイン

SiriKitは、IntentをサポートするAppのタイプに基づいてIntentをグループ化しています。

メッセージ(英語)

メッセージの送信、およびユーザーが受信したメッセージの検索を行います。

リストとメモ(英語)

メモおよびTo-Doリスト項目の作成と管理を行います。

ワークアウト(英語)

フィットネスの日課を開始、終了、管理します。

支払い(英語)

個人間送金や支払いをします。

VoIP通話(英語)

通話の開始、およびユーザーの通話履歴の検索を行います。

ビジュアルコード(英語)

QRコードを使って連絡先情報や支払い情報を伝えます。

写真(英語)

写真を検索して表示します。

配車予約(英語)

配車を予約し、状況を報告します。

カーコマンド(英語)

車のドアのロックを管理したり、車の情報を入手したりします。

CarPlay(英語)

車のCarPlayシステムを操作します。

レストラン予約(英語)

マップAppを使ってレストランの予約および予約の管理を行います。

メディア(英語)

Siri Intentsからオーディオの再生やコントロールを行ったり、ショートカットを使ってAppのメディアコンテンツを視聴したりします。

Siriとマップのカスタム表示

Intents UI Extensionの開発

Intents UI App Extensionを開発し、Siriとマップに表示されるインターフェイスをカスタマイズします。

カスタムUI(英語)

App固有のコンテンツを使って、Siriとマップのインターフェイスをカスタマイズします。

カスタムボキャブラリー

SiriKitでのカスタムボキャブラリーの登録

Appに固有の用語を登録し、SiriでどのようにAppを使うかを示すサンプルフレーズを提供します。

class INVocabulary(英語)

Siriリクエストに含まれる可能性のあるユーザー固有のボキャブラリーを登録するオブジェクト。

共通オブジェクト

SiriKit全体で使用される、文字列タイプや数字タイプなどの共通データタイプ。

class INInteraction(英語)

Intentオブジェクトに関するユーザーとAppとの間のやり取り。

共通データタイプ(英語)

文字列、日付、通貨、画像、連絡先など、共通のデータタイプを管理します。

共通のリゾルブリザルト(英語)

文字列や日付などの共通データタイプを、Appが認識できる特定の値にリゾルブします。

Intentクラス識別子(英語)

ユーザー通知によって指定されるIntentを特定します。

非推奨となったシンボル