[SiriKit] Siri が自分のアプリを認識してくれないときに試すこと

SiriKit

SiriKit 対応して、うまく Siri が自分のアプリ名を聞き取ってくれないときに試すことです

環境&対象

以下の環境で動作確認を行なっています。

  • macOS Big Sur 11.1
  • Xcode 12.3
  • iOS 14.2

SiriKit

SiriKit を使って対応することで、Siri 経由で、自分のアプリを操作してもらうことができるようになります。

そのためには、ユーザーが自分のアプリ名を呼んでくれる必要があり、そのアプリ名を Siri が聞き取ってくれる必要があります。

自分のアプリの呼び名を定義する方法がいくつかありますので、紹介します。

Apple のこちらのドキュメントを参照してます。

Siri での呼ばれ方

以下は、Apple のドキュメントの例です。(英語と日本語を抜粋してます)

  • (<appName> で)休暇というメモを作ってモントリオール大好きと書いて
  • Create a note called Vacation saying I love Montreal on <appName>.

この appName の箇所に、アプリケーション名が入ります。

# 日本語と英語での アプリケーション名の位置が違うのが興味深いです。文章の先頭で指定する国は、非常に少ないです

アプリケーション名指定方法

CFBundleDisplayName

アプリ側の Info.plist で設定される必要があります。

変更してしまうと、(Siri だけでなく)表示も変更されてしまうので、通常では、Siri のために変更したくないはずです。

CFBundleSpokenName

アプリ側の Info.plist で設定される必要があります。

特に Siri 対応していなくとも、キー値としては持っていても良いようです。VoiceOver でアプリの名前が読まれるときにも使われる設定です。

InAlternativeAppNames

このキーは、Siri 対応向けに設定されるものです。この設定も アプリ側の Info.plist で設定される必要があります。

アプリに複数の名前を与えると同時に読み方も指定できます。

以下は、Apple ドキュメントに記載されている例です。

Info.plist 内

Unicorn が発音用に、 you nee corn となっているのが面白いですね。

IntentPhrases

フレーズ例を設定できます。この設定は アプリ側の AppIntentVocabulary.plist として設定される必要があります。

アプリ名まで入れたフレーズを設定し、どの Intent に該当するかを指定できます。(以下の例では、アプリ名は、”Cuddly Creatures” です)

AppIntentVocabulary.plist

フレーズ例は、対応する Intent ごとに用意する必要があります。また、ローカライズ毎にも用意される必要があります。(不足していると AppStore から Warning が来るそうです)

Localization

ローカライズリソースも参考にされます。この設定も アプリ側の Info.plist で設定される必要があります。

上の AppIntentVocabulary.plist もローカライズできるので、ローカライズ先ごとに用意する必要があります。

自分の作ったアプリが、Siri から なかなか認識されないときにお試しください。

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です