diff --git a/app/build.gradle b/app/build.gradle
index 381dff8..39fe0a5 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -38,4 +38,6 @@ dependencies {
implementation platform('com.google.firebase:firebase-bom:29.2.1')
implementation 'com.google.firebase:firebase-analytics'
+ implementation 'com.google.firebase:firebase-messaging'
+ implementation 'com.google.firebase:firebase-messaging-directboot'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5269b23..3427eaf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,8 +9,13 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.SMSGateway">
+
+
diff --git a/app/src/main/java/com/vernu/sms/MainActivity.java b/app/src/main/java/com/vernu/sms/activities/MainActivity.java
similarity index 98%
rename from app/src/main/java/com/vernu/sms/MainActivity.java
rename to app/src/main/java/com/vernu/sms/activities/MainActivity.java
index 655928a..27ebd3a 100644
--- a/app/src/main/java/com/vernu/sms/MainActivity.java
+++ b/app/src/main/java/com/vernu/sms/activities/MainActivity.java
@@ -1,4 +1,4 @@
-package com.vernu.sms;
+package com.vernu.sms.activities;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
@@ -15,6 +15,7 @@ import android.widget.Switch;
import android.widget.Toast;
import com.google.android.material.snackbar.Snackbar;
+import com.vernu.sms.R;
public class MainActivity extends AppCompatActivity {
diff --git a/app/src/main/java/com/vernu/sms/services/FCMService.java b/app/src/main/java/com/vernu/sms/services/FCMService.java
new file mode 100644
index 0000000..8eebce3
--- /dev/null
+++ b/app/src/main/java/com/vernu/sms/services/FCMService.java
@@ -0,0 +1,80 @@
+package com.vernu.sms.services;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.os.Build;
+
+import androidx.core.app.NotificationCompat;
+
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.vernu.sms.R;
+import com.vernu.sms.activities.MainActivity;
+
+
+public class FCMService extends FirebaseMessagingService {
+
+ private static final String TAG = "MyFirebaseMsgService";
+ private static final String DEFAULT_NOTIFICATION_CHANNEL_ID = "N1";
+
+ @Override
+ public void onMessageReceived(RemoteMessage remoteMessage) {
+
+ // Check if message contains a data payload.
+ if (remoteMessage.getData().size() > 0) {
+ sendNotification("data msg", "msg boody");
+ }
+
+ // Check if message contains a notification payload.
+ if (remoteMessage.getNotification() != null) {
+ sendNotification("notif msg", "msg body");
+ }
+
+ }
+
+ @Override
+ public void onNewToken(String token) {
+ sendRegistrationToServer(token);
+ }
+
+ private void sendRegistrationToServer(String token) {
+
+ }
+
+ /* build and show notification */
+ private void sendNotification(String title, String messageBody) {
+ Intent intent = new Intent(this, MainActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
+ PendingIntent.FLAG_ONE_SHOT);
+
+ String channelId = DEFAULT_NOTIFICATION_CHANNEL_ID;
+ Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
+ NotificationCompat.Builder notificationBuilder =
+ new NotificationCompat.Builder(this, DEFAULT_NOTIFICATION_CHANNEL_ID)
+ .setSmallIcon(R.drawable.ic_launcher_foreground)
+ .setContentTitle(title)
+ .setContentText(messageBody)
+ .setAutoCancel(true)
+ .setSound(defaultSoundUri)
+ .setContentIntent(pendingIntent);
+
+ NotificationManager notificationManager =
+ (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+
+ // Since android Oreo notification channel is needed.
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ NotificationChannel channel = new NotificationChannel(channelId,
+ "Channel human readable title",
+ NotificationManager.IMPORTANCE_DEFAULT);
+ notificationManager.createNotificationChannel(channel);
+ }
+
+ notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 11cad9e..67372b7 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".MainActivity">
+ tools:context=".activities.MainActivity">