🔔

ローカルプッシュ通知をつくってみた

2023/11/10に公開

はじめに

Androidでのプッシュ通知(リモートプッシュ通知)仕様について調べる機会があり、
公式ドキュメントやら先人の知恵を検索かけてたら
ローカルプッシュ通知というものを見つけて
これ実装したら確認が楽になるんじゃ?
ということで簡単に実装してみました。

実装

コードはこちら

// インテント作成
val intent = Intent(this, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE)

// 通知準備
val channelId = "LOCAL_NOTIFICATION"
val notificationBuilder = NotificationCompat.Builder(this, channelId)
    .setSmallIcon(R.drawable.ic_launcher_foreground)
    .setContentTitle("通知タイトルを入れる")
    .setContentText("通知内容をここに入れる")
    .setContentIntent(pendingIntent)
    .setPriority(NotificationCompat.PRIORITY_DEFAULT)

// チャネル設定
val channelName = "設定画面の通知名"
val channelDescription = "設定画面の通知説明"
val importance = NotificationManager.IMPORTANCE_DEFAULT
val channel = NotificationChannel(channelId, channelName, importance)
channel.description = channelDescription

// チャネル登録
val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
manager.createNotificationChannel(channel)

// ローカルプッシュ通知送信
with(NotificationManagerCompat.from(this)) {
    if (ActivityCompat.checkSelfPermission(
	    this@MainActivity,
	    Manifest.permission.POST_NOTIFICATIONS
	) != PackageManager.PERMISSION_GRANTED
    ) {
	return
    }
    notify(1, notificationBuilder.build())
}

通知内容が長かったり、折りたたんで表示したい時はこうすればできます。

-.setContentText("通知内容をここに入れる")
+.setStyle(NotificationCompat.BigTextStyle()
+    .bigText("長い通知内容の時はこうすれば折りたたんで表示してくれる"))

AndroidManifestにパーミッションの追加をしてなければしてください。

MainActivityのonCreateとかに入れてあげるとアプリ起動時にプッシュ通知が飛んで来ます。

こんな感じ

まとめ

実際に運用して使うとなると色々と足りてない部分が多いですが
サクッとどんな感じに表示されるのかを確認するだけなら十分使えるかと思います。

コラボスタイル Developers

Discussion