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">