【正社員】還元率83%【フリーランス】マージン一律5万円で案件をご紹介させていただきます。 詳細はこちら

【Android】<Kotlin>NotificationCompatを使用して、デバイスに通知を表示する方法を徹底解説!

【Android】<Kotlin>NotificationCompatを使用して、デバイスに通知を表示する方法を徹底解説!
すだ

みなさまこんにちは〜!
メモリアインクのすだです。

本日は、
KotlinのNotificationCompatを使って指定のタイミングでデバイスに通知を表示する方法を
実際のコードを利用して徹底解説していきます!

この記事を読んでわかること…
・NotificationCompatとは?
・NotificationCompatの通知表示の実装方法
・通知内のボタンをタップして特定の画面へ遷移する方法

目次

環境

  • Kotlin (ver 1.9.0)
  • Android Studio (Giraffe | 2022.3.1 Patch 3)

NotificationCompatとは?

NotificationCompatは、Androidアプリで通知を作成・管理するためのクラスです。
Android Support Library(現在のAndroidX)の一部で、異なるAPIレベル間で互換性を確保しながら通知を作成できます。

  • 後方互換性: 古いAndroidバージョンでも通知を作成可能。
  • 簡単なAPI: 複雑な通知も簡単に作成できる。
  • 豊富な機能: アクションボタンやカスタムレイアウトなど多機能。

通知を使うシーンとしては、主に以下のような例を挙げることができます。

  1. リアルタイム通知:
    • メッセージアプリで新しいメッセージの受信を通知。
    • SNSアプリで友達のアクション(例: いいね、コメント)を通知。
  2. リマインダーやアラート:
    • カレンダーアプリで予定のリマインダー。
    • アラームアプリでの通知。
  3. バックグラウンドタスクの進行状況:
    • ファイルダウンロード中の進捗状況を通知。
    • バックグラウンドでのデータ同期の完了を通知。
  4. ユーザー誘導:
    • 特別なオファーや新機能の紹介。
    • アプリに戻るよう促す。

実際表示される通知は以下のようになります。

ロック画面▼

【Android】<Kotlin>NotificationCompatを使用して、デバイスに通知を表示する方法を徹底解説!

画面上部▼

【Android】<Kotlin>NotificationCompatを使用して、デバイスに通知を表示する方法を徹底解説!

通知を作成するための準備

Android 8.0(APIレベル26)以降では、通知を表示するために「通知チャネル」を設定する必要があります。
以下のように、通知チャネルを作成してください。

private fun createNotificationChannel() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val name = "テスト通知"
        val descriptionText = "このチャネルは通知の例です"
        val importance = NotificationManager.IMPORTANCE_HIGH
        val channel = NotificationChannel("example_channel_id", name, importance).apply {
            description = descriptionText
        }

        // 通知チャネルをシステムに登録
        val notificationManager: NotificationManager =
            getSystemService(NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(channel)
    }
}

3〜5行目:

  • name
    • 通知チャネルの名前(例: “テスト通知”)です。
    • ユーザーの通知設定画面に表示されます。
  • descriptionText
    • 通知チャネルの説明文です。
    • 通知設定画面で詳細を説明するために使用されます。
  • importance
    • 通知の重要度を示しています。
    • IMPORTANCE_HIGH:音と通知バーに表示される通常の重要度。

6〜7行目:

  • NotificationChannel
    • 新しい通知チャネルを作成するクラスです。
    • 引数:
      • "example_channel_id"
        • 通知チャネルの識別子(ユニークな文字列)。
        • 通知を送信するときにこのIDを使用してチャネルを指定します。
      • name
        • チャネルの名前。
        • 通知の重要度。
  • applyブロック
    • チャネルの説明(description)を追加で設定します。

11〜13行目:

  • getSystemService(NOTIFICATION_SERVICE)
    • 通知に関するシステムサービスを取得します。
  • createNotificationChannel(channel)
    • 作成した通知チャネルをシステムに登録します。

importance(通知の重要度)は、他にも以下の種類があります。

定数通知バーバイブレーションヘッドアップ通知
IMPORTANCE_NONE
IMPORTANCE_MIN(画面一番下に、薄い表示)
IMPORTANCE_DEFAULT(通常のスタイルで表示)
IMPORTANCE_LOWオプション次第
IMPORTANCE_HIGH(他の通知の影響を受ける場合がある)
IMPORTANCE_HIGH(常に最優先でヘッドアップ通知が表示され、他の通知に干渉されにくい)

通知を表示する基本的な方法

準備が整いましたら、早速通知を表示する実装を行いましょう。

val notification = NotificationCompat.Builder(this, "example_channel_id")
    .setSmallIcon(android.R.drawable.ic_dialog_info) // アイコン
    .setContentTitle("通知タイトル") // 通知のタイトル
    .setContentText("これは通知の本文です") // 通知の本文
    .build()

NotificationManagerCompat.from(this).notify(1, notification)

1行目:

  • NotificationCompat.Builder
    • 通知を作成するためのクラスです。
    • 引数
      • this
        • コンテキスト(通常はActivityService
      • "example_channel_id"
        • 通知チャネルのID
          (事前に createNotificationChannel メソッドで作成した通知チャネルのIDを指定します。Android 8.0以降必須)

2〜5行目:

  • setSmallIcon
    • 通知バーに表示されるアイコンを指定します。
    • android.R.drawable.ic_dialog_infoはシステムが提供するデフォルトの情報アイコンです。
  • setContentTitle
    • 通知のタイトルを指定(例: 「通知タイトル」)。通知バーや通知詳細画面に表示されます。
  • setContentText
    • 通知の本文を指定(例: 「これは通知の本文です」)。通知の詳細部分に表示されます。

最後にbuild()でBuilderで設定した内容を元に通知オブジェクトを生成します。

7行目:

  • NotificationManagerCompat.from(this)
    • 通知を管理・表示するためのクラス。from(this)で現在のコンテキストに関連付けられたNotificationManagerCompatインスタンスを取得します。
  • notify(1, notification)
    • 通知を表示するメソッド
      • 引数
        • 1
          • 通知ID(例: 1)。通知を一意に識別するために使用します。
        • notification
          • 作成した通知オブジェクト(notification

例えば、上記処理をボタンのクリックリスナー内にセットすると
以下のように ボタンのタップで通知が表示されるようになります。

【Android】<Kotlin>NotificationCompatを使用して、デバイスに通知を表示する方法を徹底解説!

まとめ

おつかれさまでした。いかがでしたでしょうか!

通知を作成して表示する機能は、多くのモバイルアプリで採用されています。
ぜひ実装方法を学んで、活用してくださいね!

すだ

技術者としてのキャリアパスを次のレベルへと進めたい皆様、
未経験からIT・Webエンジニアを目指すなら【ユニゾンキャリア】
を通じて、
自分の市場価値をさらに向上させてみませんか?

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

弊社テックブログをご愛読いただきありがとうございます。
当テックブログを運用している株式会社メモリアインクは、
【正社員】還元率83%
【フリーランス】マージン一律5万円で案件のご紹介
と、エンジニアの皆様に分かりやすい形で稼げる仕組みを構築し提供させていただいております。

コメント

コメントする

目次