NSUserActivityは、開発者がデバイス上でのアプリの可視性を高めることができるとても強力なツールです。 Siri Shortcutsの導入により、アプリの機能とのエンゲージメントがこれまで以上に簡単になりました。 SiriKitの自動音声起動機能を追加して、ユーザーのアプリ体験をさらに楽しくする方法を探ります。
NSUserActivityの話です。
このタイトルをみて分かると思いますが
反復操作に簡単にアクセスできるようにする。色々なアクションがユーザーに寄っては変わる。エンゲージメントも楽になる。タップ、あるいはボイスコマンドで直接飛べるように成る。
NSUserActivityを使う
Let them say 。。。ぜひスライド探して呼んでください
インスタンスを渡しコマンドを渡しアクションを処理する
Stringでイニシャライズします、カスタマイズは最小限、タイトルを付ける。2つ重要なステップ。isEligibleForPredictionをtrueにするのと、self.userActivityにいれる
呼び出しフレーズを録音したら呼び出せるように成る。
改善していきます
import Intents
You can say something...
もう一つできることがあります
spotlight Serchに対応
あとふたつ重要なものをimport する
CoreSpotlight, CoreServices
ContentDescription, Thumbnail、ショートカットをユニークに感じてもらうため
少しユニークになりました
そこまでが1つ目
それではステップ2
IntentsUIフレームワークで、INUIAddVoiceSurtcutButton, INUIAddVoiceSurtcutViewController
他のUIButtonと同じように設定できた
ViewControllerを設定していく
アプリを離れず設定できる
以上がStep2、ちょっとコードを上手く書くことでできる。
Siriからショートカットがアクティベートされたら呼ばれるがアプリはその制御がわからない
Siriからの指示を受け取れるようにする
2つの主なやり方があります。アプリを閉じていたら起動する必要がある。
AppDelegateに行きます。IntentをStoreし、Viewcontrollerが起動したらその値をチェックする
アプリがすでに起動されている場合には通知をトリガーに、すでにViewControllerがうごいていて、受け取る
起動させなければならない場合に、userActivityDictionaryの中身を確認する
このactivityを初期化するのに使ったものと同じもののTypeが入っている
後はアクションするだけ
Siriがショートカットを意識できるようにしなければいけません。
Activityが戻ってきたときに使う
私が推奨するのはManagerクラスを使うことです
チェックをして、起動したときにどうだったかを確認できる。
アプリケーションが既に動いていたらトリガーさせたい。
そこで数行のコード、AppDelegateをとってManagerを実装できます
2つのやり方をクリアしました
それではViewControllerに入ります
セーブしたIntentがローカルの文字列に一致するかチェックする。
矛盾する指示がないようにする。
いくつかの条件があります。奇妙な点を意識しなければなりません。
開発時にはNSUserActivity.deleteAllSavedUserActivitiesを使う。
Siriは変なキャッシングをします。本番のときは外しましょう。
次に、すべてのショートカットにはアクセスできません。
Hey Siri, 登録したショートカットを全部教えて、ということは出来ない。
おさらいします
それではぜひ追加してください