1983年にカリフォルニアで初めて開催されたAppleの世界開発者会議( WWDC) は、 iOS開発者にとって大きな焦点となっています。2007年からiOSの最初のバージョンがリリースされ、iOSシステムのバージョン番号は現在2桁に達しています。今回、iOS 13では新しい会話ショートカット、より深いカスタマイズ、新しいメディア再生体験が提供され、さまざまな機能がさらに強力になっています。WWDC 2019に続いて、 iQiyiはSiriに関連する技術調査と調査を実施しました。この記事では、SiriKitメディアインテントとSiriの提案に焦点を当てています。これらのトピックに関する業界の議論が限られていることを考慮して、iQiyiの特定のニーズに合わせて調整されたメディア再生インテント、メディア検索インテント、Siriの提案、Siriの新しいメディア再生提案などの機能を立ち上げ、ユーザーがiQiyiをより便利に使用できるようにしました。
WWDC 2016 で、Apple は Siri API を公開し、開発者が SiriKit を使用してユーザーにサービスを提供できるようにしました。SiriKit は、Siri 経由でアプリ サービスに対するユーザーのリクエストを処理し、ユーザーが実行できるリクエストの種類 (インテントと呼ばれる) を定義し、関連するインテントをドメインを使用してグループ化します。たとえば、Messages ドメインには、メッセージの送信、メッセージの検索、メッセージを既読または未読としてマークするためのインテントがあります。アプリは、Siri と通信できる拡張機能を作成することで SiriKit を使用します。アプリが実行中である必要はありません。この拡張機能は、処理できる特定のドメインとインテントを登録します。たとえば、Messagesアプリは、メッセージをサポートするドメインと、メッセージを送信するインテントを登録できます。SiriKitには、 IntentsとIntentsUIフレームワークが含まれており、次の 2 種類の拡張機能をサポートしています。 1. Intents アプリ拡張: SiriKit からのユーザー リクエストを受信し、アプリ固有のアクションに変換する役割を担います。 2. Intents UI アプリ拡張:カスタム拡張スタイルをサポートしますが、カスタム ビュー コントローラーはタッチ イベントを受信できません。 Appleは2019年のWWDCで新しいメディア再生サービスを発表し、開発者に多くの機能を開放しました。iQiyiも同時に技術研究を開始し、iOS 13の正式リリースに先立ち、メディア再生インテントのサポートを開始しました。メディアドメインは、メディアサービスに対するユーザーのリクエストを処理し、メディア再生、メディアの追加、メディアの検索、メディア設定の4つのインテントをサポートしています。メディアドメインにより、ユーザーはアプリを起動することなくオーディオメディアを再生・制御できるため、特にオーディオアプリにとって大きなメリットとなります。ビデオの場合、Siriがアプリを起動してフォアグラウンドで再生するため、再生プロセスが簡素化され、ユーザーエクスペリエンスが向上します。 iQiyi メディア再生インテントアクセスプロセス
1. Extension TargetのSupported Intents Class NameにINPlayMediaIntentを追加します。Media Categories でアプリに適切なオプションを選択します。複数選択が可能です。2. フォアグラウンドでメディアを再生する場合は、 App Target Info.plist の NSUserActivityTypes セクションにインテント クラス名を追加する必要があります。- バックグラウンドで再生している場合、アプリが受信するシステム コールバックは application:handleIntent:completionHandler: です。
- フォアグラウンドで再生している場合、アプリが受信するシステム コールバックは...アプリケーション:continueUserActivity:restorationHandlerアプリでサポートされているアクティビティ タイプを Info.plist で宣言する必要があります。
3. サンプルのインテントフレーズを提供します。メディア再生インテントの場合、サンプルフレーズがなくても機能には影響しませんが、ストアへの送信時にサンプルフレーズが不足していることを示す警告が表示されます。4. App Info.plist にアプリのエイリアスを設定します(オプション)。ユーザーが Siri 経由でアプリのサービスを利用する際、会話にアプリ名を含める必要があります。説明を容易にするために、アプリにエイリアスを設定することができます。例えば、iPad 版の iQiyi は「iQiyi HD」という名前で、エイリアスは「iQiyi」です。iPad に「iQiyi」アプリと「iQiyi HD」アプリの両方がインストールされている場合、Siri はユーザーの「iQiyi」サービスへのリクエストに「iQiyi」アプリを優先して応答します。1)一般的な処理フローには、「解決」、「確認」、「処理」の 3 つのステップが必要です。- 解決: インテントのパラメータを検証し、ユーザーのリクエストを満たすために必要な情報が含まれていることを確認します。SiriKitは各パラメータの解決メソッドを呼び出し、返された解決結果に基づいて処理方法を決定します。
- 確認: インテント パラメータの最終検証を実行し、アプリのサービスがインテントを実行する準備ができていることを確認します。
- ハンドル: インテントを実装し、処理結果を SiriKit に報告します。
2)メディアドメインのインテント処理では、確認ステップを省略することが推奨されます。Appleは自社のアプリ使用状況を分析した結果、確認ステップによってユーザーがメディアの再生を続ける可能性が低下することを発見しました。- メディア再生インテントでは、Resolve ステップは、インテントの INMediaSearch オブジェクトを解決し、特定の再生可能なメディア オブジェクトを返す役割を担います。
- mediaSearchに含まれるメディア情報は、ユーザーの説明やSiriの音声認識結果が不正確な場合があるため、実際のメディア名と完全に一致しないことがあります。検索サービスであいまい検索を行うと正確なメディア情報が返され、Siriは再生中のコンテンツを正しく表示します。
- `mediaSearch` が空の場合、ユーザーが再生するコンテンツを指定していないことを示します。再生するコンテンツを積極的に尋ねることは推奨されません。ユーザーがアプリを放棄してしまう可能性があります。開発者は、ユーザーの視聴履歴に基づいて、おすすめコンテンツや人気コンテンツを再生するか、再生を継続するかなどを判断する必要があります。
- mediaSearch には、メディア名に加えて、メディアの種類、アーティスト、並べ替えなどの情報も含まれています。これらの情報を組み合わせて検索を絞り込み、より関連性の高いコンテンツを再生する必要があります。
- iQiyi は、「The Thunder」最終回、「延禧宮物語」第 10 話、「最新の Qipa Talk」の再生など、ユーザーの意図をさらに特定し、より優れたユーザー エクスペリエンスを提供します。
3)拡張機能のライフサイクルは非常に短く、メディアの再生はアプリによって処理され、Handleステップではレスポンス結果を返すだけで済みます。- オーディオ メディアはバックグラウンドで再生されます。応答コードは次のとおりです。 INPlayMediaIntentResponseCodeHandleInApp
- ビデオ メディアはフォアグラウンドで再生する必要があります。応答コードは次のとおりです。 INPlayMediaIntentResponseCodeContinueInApp
4)アプリはインテント内のメディア情報を読み取り、再生を開始します。- バックグラウンドで再生している場合、アプリが受信するシステム コールバックは... application:handleIntent:completionHandler: の intent パラメータに必要な情報が含まれています。
- フォアグラウンドで再生している場合、アプリが受信するシステム コールバックは... `application:continueUserActivity:restorationHandler:` ディレクティブには、`userActivity.interaction.intent` とともに、必要な情報が含まれています。 iQiyi は、視聴体験を向上させるために、メディア視聴者が起動時の広告をスキップできるようにします。
5)アプリはインテント内のメディア情報を読み取り、再生を開始します。- バックグラウンドで再生している場合、アプリが受信するシステム コールバックはapplication:handleIntent:completionHandler: です。ここで、intent パラメータには必要な情報が含まれています。
- フォアグラウンドで再生する場合、アプリが受信するシステムコールバックは`application:continueUserActivity:restorationHandler:` であり、`userActivity.interaction.intent` に必要な情報が含まれています。iQiyiは、再生エクスペリエンスを向上させるために、メディア再生インテントの起動広告をスキップします。
メディア検索インテントは、アプリのフォアグラウンドでの検索結果の表示のみをサポートしています。再生インテントをサポートすれば、検索インテントの実装は比較的簡単になります。 1. リクエストと検索インテントを処理するには、「解決」と「処理」の 2 つのステップが必要です。 - 解決ステップでは、主に検索コンテンツを抽出します。
- ハンドル ステップは、応答コード INSearchForMediaIntentResponseCodeContinueInApp を含む応答結果を返します。
application:continueUserActivity:restorationHandler: 検索情報を取得し、検索結果を表示します。Siriはユーザーの習慣やアプリの使い方に基づいて、次に何をすべきかを提案します。例えば、ユーザーが朝によくコーヒーを買う場合、Siriはいつもの時間にコーヒーを注文することを提案するかもしれません。また、Siriはロック画面や検索画面でショートカットを提案することもできます。ショートカットにより、開発者は主要なアプリ機能をSiriに統合し、ユーザーがアプリを新しい方法や新しいシナリオで使用できるようになります。 開発者は、ユーザーがアプリの機能に素早くアクセスできるように、重要かつ頻繁に使用される機能のショートカットを定義することを検討する必要があります。ショートカットを定義する方法は、 NSUserActivityとIntentsの2つがあります。- NSユーザーアクティビティ これはアプリの状態を表す軽量な方法です。アプリ内の特定の機能を開くためのシンプルなショートカットを作成するだけの場合は、この方法を使用することをお勧めします。ショートカットを定義するには、 App Target Info.plist のNSUserActivityTypesにタイプを追加するだけです(例: com.myapp.name.my-activity-type;)。
- 意図 最高のショートカット体験を提供します。Siriはインテントパラメータに基づいてよりインテリジェントな予測を提供し、カスタム音声応答とカスタマイズされたUIをサポートします。Intents App Extensionと組み合わせることで、アプリを起動することなく応答を完了できます。
開発者は、カスタムインテントを作成するか、システムに組み込まれたインテントを使用するかを選択できます。カスタマイズを行う前に、Siriドメインを確認し、ニーズに合った組み込みインテントを優先順位付けする必要があります。 ユーザーがアプリ内でショートカット対応機能を使用するたびに、Siri がショートカットを提案するための適切なタイミングとシナリオを学習できるように、アプリは Siri に伝える必要があります。- NSUserActivity: Siri はuserInfoの情報に基づいてパターンを検索し、 requiredUserInfoKeysを使用して、パターン検索中に比較に使用するuserInfoのキーを指定します。persistentIdentifierは寄付を削除するときに使用されます。
Siriは、インテントパラメータに基づいて寄付を分解・再結合し、インテント定義ファイルに定義されたすべてのショートカットに組み込むことで、よりスマートな予測を可能にします。groupIdentifierは寄付を削除する際に使用されます。 寄付されたショートカットにユーザーが削除した情報が含まれている場合、またはアプリが寄付された機能をサポートしなくなった場合は、Siri から寄付を削除する必要があります。
- NSUserActivity はアプリ内で処理する必要があります。
- Intents はバックグラウンドで使用されるショートカットをサポートしており、そのためには Intents アプリ拡張機能を作成する必要があります。
インテント処理の具体的な方法については、前述のメディア再生インテントの「リクエストの処理」セクションを参照してください。 iQiyiは現在、よく使う機能の提案とメディア再生の提案という2種類の提案をサポートしています。Siriの提案が表示されるタイミングは、寄付によって形成されるパターンに依存しており、具体的な戦略は完全には明らかではありません。開発者は、他のアプリのSiri提案機能が頻繁にポップアップ表示され、ユーザーにとって煩わしい場合があることに気づきました。寄付に基づく再生行動を検討する際、iQiyiは再生の連続性を考慮します。提案が表示されるタイミングが、ユーザーに実際に視聴する時間と必要性があることを期待します。これにより、ユーザーが誤って断片的な時間帯にコンテンツを再生し、視聴パターンを形成することによるネガティブな体験を回避します。
- メディア再生の提案は、システムに組み込まれたINPlayMediaIntentを使用して実装されます。アプリは現在の再生アクションを提供しますが、ユーザーは既に視聴したコンテンツを再度視聴することはできません。INUpcomingMediaManagerは提案コンテンツを更新する機能を提供し、ユーザーがまだ視聴していないコンテンツや視聴を終えていないコンテンツを提案できるようにします。
- バックグラウンド実行をサポートするショートカットを使用すると、拡張機能の UI をカスタマイズして、より優れたユーザー エクスペリエンスを実現できます。iQiyi は Intents UI アプリ拡張機能に関する調査も実施しています。詳細な実装方法については、 公式ドキュメントを参照してください。
要約
SiriKitの機能はまだ継続的な改善が必要であり、最適化の余地が残っています。例えば、ユーザーが特定のアプリを指定せずに機能を実行しようとした場合、対応アプリのリストを表示して選択できるようにすれば便利です。AppleがSiri関連機能をさらに開放するにつれて、ユーザーはアプリの機能を新しい方法やシナリオで利用できるようになるでしょう。開発者は、以下のリソースを参照して、アプリでSiri関連機能をサポートできます。
シリキット · Siriショートカットの紹介 · ショートカットのパラメータの導入 · SiriKitメディアインテントのご紹介 |