Androidアプリ開発 ステータスバーにNotificationを表示する

2016年05月08日(編集2016年05月08日)
このエントリーをはてなブックマークに追加

Androidアプリでユーザーに通知をおこなうには、Notificationの機能を使います。

この記事は、Notificationをステータスバーに表示する方法を記載した記事です。
環境はAndroid 6.0 (API level 23) です。

環境

  • android sdk 23
  • Build Tools, Revision 23.0.3
  • Android Studio 2.1.0

難易度

初心者向け

Notificationとは

Notificationは、Android端末画面上部のステータスバーに、通知を表示する機能です。

ステータスバーのNotification

ステータスバーを下にスワイプして開くことのできるNotification drawerでは、複数のNotificationを並べることができます。
また、クリック処理を実装することもできます。

Notification drawer内のNotification

利用例

  • Gmail
  • Twitter
  • Line
  • Smart News

上記の他にも多くのアプリで利用されています。GmailとLineのNotificationの使い方が、一番ユーザーフレンドリーだと思います。

実装

ステータスバーに表示するNotificationは、以下のように実装します。

{project_folder}/app/{package}/ui/MainActivity.java
public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener, MainFragment.OnListFragmentInteractionListener {

    // something

    private void statusBarNitify() {

        NotificationCompat.Builder mBuilder =
                (NotificationCompat.Builder) new NotificationCompat.Builder(this)
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setContentTitle("My Notification")
                        .setContentText("Hello World!")
                        .setTicker("notification is displayed !!");

        int mNotificationId = 001;

        // Gets an instance of the NotificationManager service
        NotificationManager mNotifyMgr =
                (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        // Builds the notification and issues it.
        mNotifyMgr.notify(mNotificationId, mBuilder.build());
    }

    // something

}
        

■ 実装のポイント

  • NotificationCompat.Builderクラスの生成
NotificationCompat.Builder mBuilder =
                (NotificationCompat.Builder) new NotificationCompat.Builder(this) 
        

NotificationCompat.Builderは、NotificationCompatクラスを生成するためのクラスです。
NotificationCompat.Builderでは、Notificationレイアウト表示をコントロールするためのメソッドが数多く用意されています。

  • アイコンの設定は必須である
.setSmallIcon(R.mipmap.ic_launcher)
        

setSmallIconメソッドは、必ず使う必要があります。もし、使わない場合、Notificationの通知は表示されません。

  • ステータスバーの文字表示
.setTicker("notification is displayed !! notification is displayed !! notification is displayed !!");
        

setTickerで設定した文字列がステータスバーに表示されます。一行で収まらない場合は、二行目が一定時間後に表示されます。

ステータスバーのNotification
  • NotificationManagerのnotifyメソッドを呼び出す
int mNotificationId = 001;

// Gets an instance of the NotificationManager service
NotificationManager mNotifyMgr =
        (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

// Builds the notification and issues it.
mNotifyMgr.notify(mNotificationId, mBuilder.build());
        

NotificationManagerのnotifyメソッドで、ステータスバーに表示されるnotificationを送ることができます。mBuilder.build()は、Notificationクラスを生成します。

notifyメソッドの第一引数はIDです。もし、同じIDのnotificationがアプリ内で送信済みか、キャンセルされていない場合は、Notificationは最新の情報で置き換えられます。
同じID情報がNotification drawerに並ぶことはありません。

まとめ

Notificationは、ユーザーに情報を通知するための大事な機能です。

ただし、使い方によってはユーザーをイライラさせることになってしまうので、他のアプリを参考にしてNotificationの仕様を考えるのが良いと思います。

関連記事

タグ検索で調べてみよう

Android6.0 UI