デフォルトのカードテンプレートを使ってApple Watch専用のショートカット情報をカスタマイズして表示します。
概要
Apple WatchのSiriの文字盤に、レレバントショートカットをカードで表示し、以下の情報を提供できます。
-
Appのアイコンと名前(システムによって提供されます)
-
タイトル、サブタイトル、およびカスタム画像(ショートカットの作成に使用したIntentまたはユーザーアクティビティ、あるいは
INDefault
(英語)オブジェクトによって提供されます)Card Template
Intentを使用しているショートカットを表示する
AppがINIntent
(英語)オブジェクトを使ってショートカットを作成している場合、システムはIntentの定義ファイルで定義されているIntent設定からIntentのタイトルとサブタイトルを取得します。画像を含めるには、Intentでset
(英語)を呼び出し、INImage
(英語)を渡します。
サンプルApp「Soup Chef」でスープを注文するIntentに画像を設定する
orderSoupIntent.setImage(INImage(named: menuItem.iconImageName), forParameterNamed: \OrderSoupIntent.soup)
ユーザーアクティビティを使用しているショートカットを表示する
AppがNSUser
(英語)オブジェクトを使ってショートカットを作成している場合、システムはユーザーアクティビティのタイトルプロパティからタイトルを取得します。サブタイトルを指定するには、コンテンツタイプk
(英語)を使ってCSSearchable
(英語)を作成し、content
(英語)プロパティを設定します。画像を含めるには、属性セットでthumbnail
(英語)を設定します。
NSUserActivityオブジェクトでタイトル、サブタイトル、画像を設定する
import CoreSpotlight
import MobileCoreServices
let userActivity = NSUserActivity(activityType: "com.myapp.myactivity")
userActivity.title = "Title"
let attributes = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
attributes.contentDescription = "Subtitle"
attributes.thumbnailData = imageLiteral(resourceName: "custom-image").pngData()
userActivity.contentAttributeSet = attributes
カードテンプレートを使用する
Apple Watch専用のUIを表示したい場合は(SiriがユーザーのiPhoneやiPadに表示するショートカットのタイトルよりも短いタイトルを表示する場合など)、watch
(英語)プロパティを設定して、レレバントショートカットにデフォルトのカードテンプレートを提供します。Appは、このテンプレートを使ってtitle
(英語)、subtitle
(英語)、およびimage
(英語)をカスタマイズできます(カードに表示されるAppのアイコンと名前を変更または削除することはできません)。
サンプルApp「Soup Chef」で注文Intentにテンプレートを設定する
let order = Order(quantity: 1, menuItem: menuItem, menuItemOptions: [])
let orderIntent = order.intent
guard let shortcut = INShortcut(intent: orderIntent) else { return nil }
let suggestedShortcut = INRelevantShortcut(shortcut: shortcut)
let localizedTitle = NSString.deferredLocalizedIntentsString(with: "ORDER_LUNCH_TITLE") as String
let template = INDefaultCardTemplate(title: localizedTitle)
template.subtitle = NSString.deferredLocalizedIntentsString(with: menuItem.shortcutNameKey + "_SUBTITLE") as String
template.image = INImage(named: menuItem.iconImageName)
suggestedShortcut.watchTemplate = template
リスト3のコードにより、図1にあるSiriの文字盤カードが作成されます。サンプルコード一式をダウンロードするには、Soup Chef:ショートカットによる迅速なApp操作(英語)を参照してください。
Soup Chefからのレレバントショートカットが表示されているSiriの文字盤

システムは、カードテンプレートでAppが提供している情報に応じて、4つあるレイアウトのいずれかを使って情報を表示します。たとえば、画像が提供されていない場合、タイトルとサブタイトルフィールドのみのレイアウトが使用されます。また、タイトルのみが提供されている場合は、タイトルを2行で表示できるレイアウトが使用されます。
Siriの文字盤カードのレイアウト例
