Java tutorial
/* The MIT License (MIT) * Copyright (c) 2016 BELATRIX * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package com.belatrix.events.utils.fcm; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.RingtoneManager; import android.net.Uri; import android.os.Vibrator; import android.support.v4.app.NotificationCompat; import com.belatrix.events.BxEventsApplication; import com.belatrix.events.R; import com.belatrix.events.presentation.ui.activities.MainActivity; import com.belatrix.events.utils.cache.Cache; import com.google.firebase.messaging.FirebaseMessagingService; import com.google.firebase.messaging.RemoteMessage; import java.util.Date; import java.util.Map; import javax.inject.Inject; public class EventsFirebaseMessagingService extends FirebaseMessagingService { public static final String TITLE_KEY = "title"; public static final String DETAIL_KEY = "detail"; @Inject Cache cache; @Override public void onCreate() { super.onCreate(); ((BxEventsApplication) getApplication()).getComponent().inject(this); } @Override public void onMessageReceived(RemoteMessage remoteMessage) { Map<String, String> notificationData = remoteMessage.getData(); if (notificationData != null && cache.isNotificationEnabled()) { sendNotification(notificationData.get(TITLE_KEY), remoteMessage.getData().get(DETAIL_KEY)); } com.google.firebase.messaging.RemoteMessage.Notification notification = remoteMessage.getNotification(); //Calling method to generate notification if (notification != null && cache.isNotificationEnabled()) { sendNotification(notification.getTitle(), notification.getBody()); } } private void sendNotification(String messageTitle, String messageBody) { Intent intent = MainActivity.makeIntent(this); intent.putExtra(MainActivity.PARAM_FROM_NOTIFICATION, true); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT); NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle(); bigTextStyle.setBigContentTitle(messageTitle); bigTextStyle.bigText(messageBody); Bitmap icon = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.ic_launcher); Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.bx_connect_white).setLargeIcon(icon).setStyle(bigTextStyle) .setContentText(messageBody).setContentTitle(messageTitle).setAutoCancel(true) .setContentIntent(pendingIntent).setSound(alarmSound).setLights(0xFF8F0300, 1000, 200) .setPriority(Notification.PRIORITY_MAX); //for vibration Vibrator v = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE); v.vibrate(1000); NotificationManager notificationManager = (NotificationManager) getSystemService( Context.NOTIFICATION_SERVICE); long time = new Date().getTime(); String tmpStr = String.valueOf(time); String last4Str = tmpStr.substring(tmpStr.length() - 5); int notificationId = Integer.valueOf(last4Str); notificationManager.notify(notificationId, notificationBuilder.build()); } }