展開可能な通知を作成する

基本的な通知には、通常、タイトル、テキスト、アクションが含まれます。 実行できます。より多くの情報を提供するには、大容量の 複数の通知テンプレートのいずれかを 説明します。

まず、通知を作成します。基本コンテンツについては、 通知を作成する。その後、 発信 setStyle() をスタイル オブジェクトで指定し、各テンプレートに対応する 例を示しています。

大きな画像を追加する

通知に画像を追加するには、 NotificationCompat.BigPictureStyle 宛先: setStyle()

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setStyle(NotificationCompat.BigPictureStyle()
                .bigPicture(myBitmap))
        .build()

Java

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setStyle(new NotificationCompat.BigPictureStyle()
               .bigPicture(myBitmap))
        .build();

通知が表示されているときにのみ画像がサムネイルとして表示されるようにするには、 折りたたまれた状態で、次の図に示すように、 setLargeIcon() イメージを渡します。次に、 BigPictureStyle.bigLargeIcon() null を渡します。通知を受け取ったときに大きなアイコンが消えます。 展開済み:

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setLargeIcon(myBitmap)
        .setStyle(NotificationCompat.BigPictureStyle()
                .bigPicture(myBitmap)
                .bigLargeIcon(null))
        .build()

Java

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_post)
        .setContentTitle(imageTitle)
        .setContentText(imageDescription)
        .setLargeIcon(myBitmap)
        .setStyle(new NotificationCompat.BigPictureStyle()
                .bigPicture(myBitmap)
                .bigLargeIcon(null))
        .build();
<ph type="x-smartling-placeholder">
</ph> 折りたたまれた通知と、青色の画像を含む展開された通知の画像 <ph type="x-smartling-placeholder">
</ph> 図 1.次を使用した通知: NotificationCompat.BigPictureStyle

大きなテキスト ブロックを追加する

申し込み NotificationCompat.BigTextStyle 通知の展開済みコンテンツ領域にテキストを表示するには、次のようにします。

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle(emailObject.getSenderName())
        .setContentText(emailObject.getSubject())
        .setLargeIcon(emailObject.getSenderAvatar())
        .setStyle(NotificationCompat.BigTextStyle()
                .bigText(emailObject.getSubjectAndSnippet()))
        .build()

Java

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle(emailObject.getSenderName())
        .setContentText(emailObject.getSubject())
        .setLargeIcon(emailObject.getSenderAvatar())
        .setStyle(new NotificationCompat.BigTextStyle()
                .bigText(emailObject.getSubjectAndSnippet()))
        .build();
<ph type="x-smartling-placeholder">
</ph> 折りたたまれた通知と、BigTextStyle を使用して開いた通知を示す画像 <ph type="x-smartling-placeholder">
</ph> 図 2.次を使用した通知: NotificationCompat.BigTextStyle
で確認できます。

受信トレイスタイルの通知を作成する

申し込み NotificationCompat.InboxStyle たとえば、次のような短い要約行を追加する場合は、 メールから抽出するこれにより、複数のコンテンツ テキストを追加できます。 連続した 1 行のテキストではなく、それぞれ 1 行に切り捨てられる 提供元: NotificationCompat.BigTextStyle

新しい回線を追加するには、 addLine() 最大 6 回まで含めることができます。6 つ以上 最初の 6 行のみが表示されます。

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.baseline_email_24)
        .setContentTitle("5 New mails from Frank")
        .setContentText("Check them out")
        .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo))
        .setStyle(
                NotificationCompat.InboxStyle()
                .addLine("Re: Planning")
                .addLine("Delivery on its way")
                .addLine("Follow-up")
        )
        .build()

Java

Notification notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.baseline_email_24)
        .setContentTitle("5 New mails from Frank")
        .setContentText("Check them out")
        .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo))
        .setStyle(
                NotificationCompat.InboxStyle()
                .addLine("Re: Planning")
                .addLine("Delivery on its way")
                .addLine("Follow-up")
        )
        .build();

結果は次の図のようになります。

<ph type="x-smartling-placeholder">
</ph> 展開された受信トレイ形式の通知の画像 <ph type="x-smartling-placeholder">
</ph> 図 3.展開された受信トレイのスタイル 通知を受け取ります。
で確認できます。

通知に会話を表示する

申し込み NotificationCompat.MessagingStyle 人の数に関係なく、連続したメッセージを表示できます。この方法は 各メッセージに一貫したレイアウトを提供するため、 送信者名とメッセージ テキストを個別に処理します。各メッセージは、 複数行にわたる可能性があります。

新しいメッセージを追加するには、 addMessage() メッセージ テキスト、受信時刻、送信者の名前を渡します。また、 この情報を NotificationCompat.MessagingStyle.Message オブジェクトを作成しています。

Kotlin

val message1 = NotificationCompat.MessagingStyle.Message(
        messages[0].getText(),
        messages[0].getTime(),
        messages[0].getSender())
val message2 = NotificationCompat.MessagingStyle.Message(
        messages[1].getText(),
        messages[1].getTime(),
        messages[1].getSender())
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_message)
        .setStyle(
                NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name))
                .addMessage(message1)
                .addMessage(message2))
        .build()

Java

NotificationCompat.MessagingStyle.Message message1 =
        new NotificationCompat.MessagingStyle.Message(messages[0].getText(),
                                                      messages[0].getTime(),
                                                      messages[0].getSender());
NotificationCompat.MessagingStyle.Message message2 =
        new NotificationCompat.MessagingStyle.Message(messages[1].getText(),
                                                      messages[1].getTime(),
                                                      messages[1].getSender());

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_message)
        .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name))
                .addMessage(message1)
                .addMessage(message2))
        .build();
<ph type="x-smartling-placeholder">
</ph> メッセージ スタイルの通知を示す画像 <ph type="x-smartling-placeholder">
</ph> 図 4.次を使用した通知: NotificationCompat.MessagingStyle

NotificationCompat.MessagingStyle を使用する場合、 setContentTitle() および setContentText() は無視されます。

setConversationTitle() スレッドの上に表示されるタイトルを追加します。たとえば、 ユーザーが作成したグループの名前か、特定の名前がない場合は、 表示することもできます。会話のタイトルを設定しない 1 対 1 のチャット。この欄の存在がヒントとして使用されます。 会話がグループであることを確認します。

このスタイルは、Android 7.0(API レベル 24)以降を搭載しているデバイスにのみ適用されます。 互換性ライブラリを使用する場合 (NotificationCompat), 前述のように、MessagingStyle が設定された通知は 自動的に展開されます。

チャットの会話についてこのような通知を作成する場合は、ダイレクト メッセージと 返信アクション

メディア コントロールを備えた通知を作成する

申し込み MediaStyleNotificationHelper.MediaStyle メディアの再生コントロールとトラック情報を表示します。

関連付けられた MediaSession: コンストラクタがあります。これにより、Android は できます。

発信 addAction() 最大 5 つのアイコンボタンを表示できます。setLargeIcon() に発信して アルバムのアートワークを設定します。

他の通知スタイルとは異なり、MediaStyle では、 表示される 3 つの操作ボタンを指定して、折りたたみサイズのコンテンツ ビューを表示 折りたたまれたビューで表示されます。そのためには、各リソースへのアクション ボタンのインデックスを setShowActionsInCompactView()

次の例は、メディア コントロールを使用して通知を作成する方法を示しています。

Kotlin

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
        // Show controls on lock screen even when user hides sensitive content.
        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
        .setSmallIcon(R.drawable.ic_stat_player)
        // Add media control buttons that invoke intents in your media service
        .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
        .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1
        .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2
        // Apply the media style template.
        .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession)
                .setShowActionsInCompactView(1 /* #1: pause button \*/))
        .setContentTitle("Wonderful music")
        .setContentText("My Awesome Band")
        .setLargeIcon(albumArtBitmap)
        .build()

Java

Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
        // Show controls on lock screen even when user hides sensitive content.
        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
        .setSmallIcon(R.drawable.ic_stat_player)
        // Add media control buttons that invoke intents in your media service
        .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
        .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
        .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
        // Apply the media style template.
        .setStyle(new MediaStyleNotificationHelper.MediaStyle(mediaSession)
                .setShowActionsInCompactView(1 /* #1: pause button */))
        .setContentTitle("Wonderful music")
        .setContentText("My Awesome Band")
        .setLargeIcon(albumArtBitmap)
        .build();
<ph type="x-smartling-placeholder">
</ph> メディア スタイル付きの通知を示す画像 <ph type="x-smartling-placeholder">
</ph> 図 5.次を使用した通知: MediaStyleNotificationHelper.MediaStyle
で確認できます。

参考情報

MediaStyle と詳細については、次のリファレンスをご覧ください。 展開可能な通知を表示します。