Android

Androidでのローカルプッシュ通知実装

投稿日:2019年10月10日 更新日:

はじめに

こんにちは。カイザーです。今回は、Androidでのローカルプッシュ通知をするために、WorkManagerを使用した実装を紹介します。

WorkManagerとは?

Jetpackの機能の1つで、簡単に定期的もしくは単発のバックグラウンドタスクを定義し、実行することができます。
実際には、JobScheduler、FirebaseJobDispatcher、AlarmManagerのいずれかを、OSのバージョンや、Google Play Servicesのインストール状況によって使い分けてくれるものです。

WorkManagerの導入

app/build.gradleに以下追加します。

この後の実装をした際、以下のエラーが出る場合は、JVM target 1.8に変更する必要があります。

Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option

その場合は、以下を追加してください。

Android Studio側にも同様の設定項目がありますが、記事執筆時点のAndroid Studio 3.5では、上記設定を記載しないと反映されません。

実装例

主な登場人物は、Worker、WorkManager、WorkRequestの3つです。

Workerは実際にバックグラウンドタスクとして呼ばれ、WorkRequestで実行方法を指定し、WorkManagerエンキューする流れになります。

Workerの実装

WorkerManagerに登録し、実際にバックグラウンドタスクとして動作するクラスを実装します。
今回は、ここでNotificationChannelにプッシュ通知する実装をします。

inputDataは、Workerをエンキューする時にあらかじめデータを渡され、実行時に使用可能なプロパティです。今回は、プッシュ通知のtitleに表示するようにしています。

OneTimeWorkRequestBuilderの実装

OneTimeRequestBuilderは、Workerを1回だけ動作させるリクエストです。

コンストラクタのGenericksでWorkerの型を指定します。

setInitialDelayで、Workerの実行遅延時間を設定できます。これにより、相対的にプッシュ通知を表示したい時間を設定できます。

PeriodicWorkRequestBuilderの実装

PeriodicWorkRequestBuilderは、Workerを定期実行させるリクエストです。

こちらは、コンストラクタで、リピート間隔を指定する必要があります。(第1、第2引数)

しかし、これだけでは確実に定期実行される訳ではありません。AndroidがDozeモードになっていると、実行されません。

そこで、実行時間(リピートする際に、何分以内に実行すべきか)を指定することで、確実に実行することができます。(第3、第4引数)

注意点としては、PeriodicWorkRequestでは、時間指定に制限があります。

リピート間隔は15分以上、実行時間は5分以上とする必要があります。これを満たしていないと、エンキューの際に以下ログと共に、Workerが実行されないので注意してください。

NotificationChannelの作成

ローカルプッシュ通知用のNotificationChannelを作成します。

これは、エンキューするまでには実行しておいた方が良いでしょう。

これで完了です。

プッシュ通知が表示されました。

さいごに

iOS は割と簡単に実装できるローカルプッシュ通知ですが、Androidでは全く異なる概念であることが分かりました。

バックグラウンドの実行制限も受けるため、ローカルプッシュ実装時にはその辺りの制約にも気をつけたいですね。

おすすめ書籍

Kotlinスタートブック -新しいAndroidプログラミング Kotlinイン・アクション 速習 Kotlin: Javaより簡単!新Android開発言語を今すぐマスター 速習シリーズ

blog-page_footer_336




blog-page_footer_336




-Android
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

Kotlinをはじめよう〜コレクションなど〜

1 はじめに2 配列3 レンジ4 コレクション(リスト)5 コレクション(セット)6 コレクション(マップ)7 コレクションまとめ8 さいごに9 おすすめ書籍 はじめに 前回のKotlin基本文法編に ...

KotlinでAndroidの双方向DataBindingを利用する

1 はじめに2 MVVMアーキテクチャ2.1 Model2.2 View2.3 ViewModel3 KotlinでAndroid DataBindingを設定4 説明用のサンプルアプリについて5 a ...

Kotlinをはじめよう〜Kotlin基本文法〜

1 はじめに2 事前準備3 基本データ型4 変数5 条件分岐 if式6 条件分岐 when式7 繰り返し制御 while文8 繰り返し制御 for文9 さいごに10 おすすめ書籍 はじめに こんにちは ...

【Androidマテリアル】Ripple Effect

1 はじめに2 Ripple Effectとは3 設定方法4 カスタマイズ5 さいごに はじめに こんにちは、ソニーから新Aiboが発表されましたね。個人的には欲しいと思っているのですが、最近Goog ...

【Java】ストリームについてまとめてみました

1 はじめに2 Streamの分類3 テキストファイルの読み書き4 バイナリファイルの読み書き5 読み書きのバッファリング処理6 さいごに7 おすすめ書籍 はじめに Javaではすべての入出力をストリ ...

フォロー

follow us in feedly

blog-page_side_responsive

東京改造計画(NewsPicks Book)
2019年10月
 12345
6789101112
13141516171819
20212223242526
2728293031 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。