ドキュメント
Siriの文字盤カードでのショートカット情報の表示
デフォルトのカードテンプレートを使ってApple Watch専用のショートカット情報をカスタマイズして表示します。
概要
Apple WatchのSiriの文字盤に、レレバントショートカットをカードで表示し、以下の情報を提供できます。
Intentを使用しているショートカットを表示する
アプリがINIntent
(英語) オブジェクトを使ってショートカットを作成している場合、システムはIntentの定義ファイルで定義されているIntent設定からIntentのタイトルとサブタイトルを取得します。画像を含めるには、IntentでsetImage(_:forParameterNamed:)
(英語) を呼び出し、INImage
(英語) を渡します。
リスト1
サンプルアプリ「Soup Chef」でスープを注文するIntentに画像を設定する
orderSoupIntent.setImage(INImage (named: menuItem.iconImageName), forParameterNamed: \OrderSoupIntent .soup)
ユーザーアクティビティを使用しているショートカットを表示する
アプリがNSUserActivity
(英語) オブジェクトを使ってショートカットを作成している場合、システムはユーザーアクティビティのタイトルプロパティからタイトルを取得します。サブタイトルを指定するには、コンテンツタイプkUTTypeItem
(英語) を使ってCSSearchableItemAttributeSet
(英語) を作成し、contentDescription
(英語) プロパティを設定します。画像を含めるには、属性セットでthumbnailData
(英語) を設定します。
リスト2
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に表示するショートカットのタイトルよりも短いタイトルを表示する場合など)、watchTemplate
(英語) プロパティを設定して、レレバントショートカットにデフォルトのカードテンプレートを提供します。アプリは、このテンプレートを使ってtitle
(英語) 、subtitle
(英語) 、およびimage
(英語) をカスタマイズできます(カードに表示されるアプリのアイコンと名前を変更または削除することはできません)。
リスト3
サンプルアプリ「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:ショートカットによる迅速なアプリ操作(英語) を参照してください。
図1
Soup Chefからのレレバントショートカットが表示されているSiriの文字盤
システムは、カードテンプレートでアプリが提供している情報に応じて、4つあるレイアウトのいずれかを使って情報を表示します。たとえば、画像が提供されていない場合、タイトルとサブタイトルフィールドのみのレイアウトが使用されます。また、タイトルのみが提供されている場合は、タイトルを2行で表示できるレイアウトが使用されます。
図2