会話

Android 11 では、「会話」の処理方法がさまざまな点で改善されています。会話とは、次のようなコミュニケーションです。

  • リアルタイムです。
  • 双方向または多方向で、一方向ではありません。
  • 2 人以上のユーザー(ボットではない)が参加します。

こうした会話が、専用の領域に提示されるようになり、その会話の通知がハイライト表示され、追加機能が通知に組み込まれます。

  • ユーザーが会話の通知を長押しすると、以下のような選択肢が提供されます。
    • アプリがサポートしている場合、会話をバブルにします。
    • その会話のショートカットを作成して、ホーム画面に追加します。
    • その会話の通知を消音またはスヌーズします。
    • その会話に非常に重要というマークを付けます。
  • 通知のデザインには、MessagingStyle の新しいバージョンが使用され、ユーザーを表すアバターが強調され、会話を実行しているアプリのアイコンを組み合わせて表示されます。

この特別な処理を行うために会話を識別するには、アプリは ShortcutManager メソッドを呼び出して、その会話へのショートカットを公開する必要があります。既存のショートカットをすべて置き換えるには setDynamicShortcuts() を、既存のショートカットを削除せずに新しいショートカットを追加するには addDynamicShortcuts() を呼び出します。また、新しいメソッド pushDynamicShortCut() を呼び出して、1 つのショートカットを追加することもできます。会話のショートカットは長期間保持し、ユーザーのデータを添付して、会話の他の参加者を識別する必要があります。また、ショートカットの LocusId を設定し、アプリ内のアクティビティとフラグメントにその LocusId のアノテーションを付けることをおすすめします。これにより、アプリの使用方法に応じて、システムが会話を正確にランク付けできます。

会話が終わったら、アプリは ShortcutManager.removeLongLivedShortcuts() を使ってショートカットを削除できます。これにより、その会話に関連付けられたすべてのデータが削除されます。

アプリが会話に関する通知を送信する際は、MessagingStyle を使用し、会話のショートカットへのリンクを含める必要があります。これにより、システムは通知に特別な会話処理をさせることができます。

ユーザーの行動に基づいて、システムが特定の会話を特に重要とみなしてキャッシュに保存し、他より目立つように表示することがあります。どの会話がこうした優先された扱いを受けるかを、アプリが左右することはできません。ただし、どの会話が現在キャッシュされているかは、新しいメソッド ShortcutManager.getShortcuts()FLAG_MATCH_CACHED を渡して呼び出すことで判断できます。