From c5a063a19a09a5c3908e27aef522330b54a9d6ee Mon Sep 17 00:00:00 2001 From: William Moore Date: Thu, 15 Jun 2023 03:40:04 -0500 Subject: [PATCH] Initial commit --- .gitignore | 15 ++ LICENSE | 212 ++++++++++++++++++ app/build.gradle | 46 ++++ app/proguard-rules.pro | 21 ++ app/src/main/AndroidManifest.xml | 48 ++++ .../works/grunge/fcm_receiver/MainActivity.kt | 100 +++++++++ .../MyFirebaseMessagingService.kt | 128 +++++++++++ .../works/grunge/fcm_receiver/MyWorker.kt | 19 ++ .../ic_stat_ic_notification.png | Bin 0 -> 743 bytes .../res/drawable-hdpi/firebase_lockup_400.png | Bin 0 -> 8076 bytes .../drawable-hdpi/ic_stat_ic_notification.png | Bin 0 -> 855 bytes .../ic_stat_ic_notification.png | Bin 0 -> 531 bytes .../res/drawable-mdpi/firebase_lockup_400.png | Bin 0 -> 4689 bytes .../drawable-mdpi/ic_stat_ic_notification.png | Bin 0 -> 552 bytes .../ic_stat_ic_notification.png | Bin 0 -> 1153 bytes .../drawable-xhdpi/firebase_lockup_400.png | Bin 0 -> 9439 bytes .../ic_stat_ic_notification.png | Bin 0 -> 1067 bytes .../ic_stat_ic_notification.png | Bin 0 -> 2022 bytes .../drawable-xxhdpi/firebase_lockup_400.png | Bin 0 -> 18887 bytes .../ic_stat_ic_notification.png | Bin 0 -> 1948 bytes .../ic_stat_ic_notification.png | Bin 0 -> 3210 bytes .../ic_stat_ic_notification.png | Bin 0 -> 2851 bytes app/src/main/res/layout/activity_main.xml | 42 ++++ app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3756 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2249 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4826 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7723 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 11115 bytes app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/colors.xml | 12 + app/src/main/res/values/dimens.xml | 7 + app/src/main/res/values/strings.xml | 22 ++ app/src/main/res/values/styles.xml | 10 + build.gradle | 7 + gradle.properties | 23 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 +++++++++++++++ gradlew.bat | 89 ++++++++ settings.gradle | 16 ++ 40 files changed, 1014 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/works/grunge/fcm_receiver/MainActivity.kt create mode 100644 app/src/main/java/works/grunge/fcm_receiver/MyFirebaseMessagingService.kt create mode 100644 app/src/main/java/works/grunge/fcm_receiver/MyWorker.kt create mode 100644 app/src/main/res/drawable-hdpi-v11/ic_stat_ic_notification.png create mode 100644 app/src/main/res/drawable-hdpi/firebase_lockup_400.png create mode 100644 app/src/main/res/drawable-hdpi/ic_stat_ic_notification.png create mode 100644 app/src/main/res/drawable-mdpi-v11/ic_stat_ic_notification.png create mode 100644 app/src/main/res/drawable-mdpi/firebase_lockup_400.png create mode 100644 app/src/main/res/drawable-mdpi/ic_stat_ic_notification.png create mode 100644 app/src/main/res/drawable-xhdpi-v11/ic_stat_ic_notification.png create mode 100644 app/src/main/res/drawable-xhdpi/firebase_lockup_400.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_stat_ic_notification.png create mode 100644 app/src/main/res/drawable-xxhdpi-v11/ic_stat_ic_notification.png create mode 100644 app/src/main/res/drawable-xxhdpi/firebase_lockup_400.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_stat_ic_notification.png create mode 100644 app/src/main/res/drawable-xxxhdpi-v11/ic_stat_ic_notification.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_stat_ic_notification.png create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2503d43 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +.gradle +local.properties +.idea +build/ +.DS_Store +*.iml +*.apk +*.aar +*.zip +google-services.json + +.project +.settings +.classpath +.vscode diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9d950e0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,212 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2017 Google Inc + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + All code in any directories or sub-directories that end with *.html or + *.css is licensed under the Creative Commons Attribution International + 4.0 License, which full text can be found here: + https://creativecommons.org/licenses/by/4.0/legalcode. + + As an exception to this license, all html or css that is generated by + the software at the direction of the user is copyright the user. The + user has full ownership and control over such content, including + whether and how they wish to license it. diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..5aa9ebe --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,46 @@ +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' + id 'com.google.gms.google-services' +} + +android { + namespace 'works.grunge.fcm_receiver' + compileSdk 33 + + defaultConfig { + applicationId "works.grunge.fcm_receiver" + minSdk 24 + targetSdk 33 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = '11' + } +} + +dependencies { + implementation 'androidx.core:core-ktx:1.10.1' + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'com.google.android.material:material:1.9.0' + implementation 'com.google.firebase:firebase-messaging-ktx:23.1.2' + implementation 'androidx.work:work-runtime-ktx:2.8.1' + implementation 'com.google.gms:google-services:4.3.15' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..0b77729 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/works/grunge/fcm_receiver/MainActivity.kt b/app/src/main/java/works/grunge/fcm_receiver/MainActivity.kt new file mode 100644 index 0000000..b937761 --- /dev/null +++ b/app/src/main/java/works/grunge/fcm_receiver/MainActivity.kt @@ -0,0 +1,100 @@ +package works.grunge.fcm_receiver + +import android.Manifest +import android.app.NotificationChannel +import android.app.NotificationManager +import android.content.pm.PackageManager +import android.os.Build +import android.os.Bundle +import android.util.Log +import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import com.google.firebase.FirebaseApp +import com.google.firebase.ktx.Firebase +import com.google.firebase.messaging.ktx.messaging + +class MainActivity : AppCompatActivity() { + + private val requestPermissionLauncher = registerForActivityResult( + ActivityResultContracts.RequestPermission(), + ) { isGranted: Boolean -> + if (isGranted) { + Toast.makeText(this, "Notifications permission granted", Toast.LENGTH_SHORT) + .show() + } else { + Toast.makeText( + this, + "FCM can't post notifications without POST_NOTIFICATIONS permission", + Toast.LENGTH_LONG, + ).show() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // Create channel to show notifications. + val channelId = getString(R.string.default_notification_channel_id) + val channelName = getString(R.string.default_notification_channel_name) + val notificationManager = getSystemService(NotificationManager::class.java) + notificationManager?.createNotificationChannel( + NotificationChannel( + channelId, + channelName, + NotificationManager.IMPORTANCE_LOW, + ), + ) + } + + Firebase.messaging.subscribeToTopic("teasense") + .addOnCompleteListener { task -> + var msg = getString(R.string.msg_subscribed) + if (!task.isSuccessful) { + msg = getString(R.string.msg_subscribe_failed) + } + Log.d(TAG, msg) + Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() + } + // If a notification message is tapped, any data accompanying the notification + // message is available in the intent extras. In this sample the launcher + // intent is fired when the notification is tapped, so any accompanying data would + // be handled here. If you want a different intent fired, set the click_action + // field of the notification message to the desired intent. The launcher intent + // is used when no click_action is specified. + // + // Handle possible data accompanying notification message. + // [START handle_data_extras] + intent.extras?.let { + for (key in it.keySet()) { + val value = intent.extras?.getString(key) + Log.d(TAG, "Key: $key Value: $value") + } + } + // [END handle_data_extras] + + Toast.makeText(this, "See README for setup instructions", Toast.LENGTH_SHORT).show() + askNotificationPermission() + } + + private fun askNotificationPermission() { + // This is only necessary for API Level > 33 (TIRAMISU) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == + PackageManager.PERMISSION_GRANTED + ) { + // FCM SDK (and your app) can post notifications. + } else { + // Directly ask for the permission + requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + } + } + } + + companion object { + + private const val TAG = "MainActivity" + } +} diff --git a/app/src/main/java/works/grunge/fcm_receiver/MyFirebaseMessagingService.kt b/app/src/main/java/works/grunge/fcm_receiver/MyFirebaseMessagingService.kt new file mode 100644 index 0000000..ac6c09d --- /dev/null +++ b/app/src/main/java/works/grunge/fcm_receiver/MyFirebaseMessagingService.kt @@ -0,0 +1,128 @@ +package works.grunge.fcm_receiver + +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.os.Build +import android.util.Log +import androidx.core.app.NotificationCompat +import androidx.work.OneTimeWorkRequest +import androidx.work.WorkManager +import com.google.firebase.messaging.FirebaseMessagingService +import com.google.firebase.messaging.RemoteMessage + +class MyFirebaseMessagingService : FirebaseMessagingService() { + + /** + * Called when message is received. + * + * @param remoteMessage Object representing the message received from Firebase Cloud Messaging. + */ + // [START receive_message] + override fun onMessageReceived(remoteMessage: RemoteMessage) { + // [START_EXCLUDE] + // There are two types of messages data messages and notification messages. Data messages are handled + // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type + // traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app + // is in the foreground. When the app is in the background an automatically generated notification is displayed. + // When the user taps on the notification they are returned to the app. Messages containing both notification + // and data payloads are treated as notification messages. The Firebase console always sends notification + // messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options + // [END_EXCLUDE] + + // TODO(developer): Handle FCM messages here. + // Not getting messages here? See why this may be: https://goo.gl/39bRNJ + Log.d(TAG, "From: ${remoteMessage.from}") + + // Check if message contains a notification payload. + remoteMessage.notification?.let { + Log.d(TAG, "Message Notification Body: ${it.body}") + it.body?.let { body -> sendNotification(body) } + } + + // Also if you intend on generating your own notifications as a result of a received FCM + // message, here is where that should be initiated. See sendNotification method below. + } + // [END receive_message] + + private fun isLongRunningJob() = true + + // [START on_new_token] + /** + * Called if the FCM registration token is updated. This may occur if the security of + * the previous token had been compromised. Note that this is called when the + * FCM registration token is initially generated so this is where you would retrieve the token. + */ + override fun onNewToken(token: String) { + Log.d(TAG, "Refreshed token: $token") + + // If you want to send messages to this application instance or + // manage this apps subscriptions on the server side, send the + // FCM registration token to your app server. + sendRegistrationToServer(token) + } + // [END on_new_token] + + /** + * Persist token to third-party servers. + * + * Modify this method to associate the user's FCM registration token with any server-side account + * maintained by your application. + * + * @param token The new token. + */ + private fun sendRegistrationToServer(token: String?) { + // TODO: Implement this method to send token to your app server. + Log.d(TAG, "sendRegistrationTokenToServer($token)") + } + + /** + * Create and show a simple notification containing the received FCM message. + * + * @param messageBody FCM message body received. + */ + private fun sendNotification(messageBody: String) { + val requestCode = 0 + val intent = Intent(this, MainActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + val pendingIntent = PendingIntent.getActivity( + this, + requestCode, + intent, + PendingIntent.FLAG_IMMUTABLE, + ) + + val channelId = getString(R.string.default_notification_channel_id) + val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) + val notificationBuilder = NotificationCompat.Builder(this, channelId) + .setSmallIcon(R.drawable.ic_stat_ic_notification) + .setContentTitle(getString(R.string.fcm_message)) + .setContentText(messageBody) + .setAutoCancel(true) + .setSound(defaultSoundUri) + .setContentIntent(pendingIntent) + + val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + + // Since android Oreo notification channel is needed. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val channel = NotificationChannel( + channelId, + "Channel human readable title", + NotificationManager.IMPORTANCE_DEFAULT, + ) + notificationManager.createNotificationChannel(channel) + } + + val notificationId = 0 + notificationManager.notify(notificationId, notificationBuilder.build()) + } + + companion object { + + private const val TAG = "MyFirebaseMsgService" + } +} diff --git a/app/src/main/java/works/grunge/fcm_receiver/MyWorker.kt b/app/src/main/java/works/grunge/fcm_receiver/MyWorker.kt new file mode 100644 index 0000000..0d23c44 --- /dev/null +++ b/app/src/main/java/works/grunge/fcm_receiver/MyWorker.kt @@ -0,0 +1,19 @@ +package works.grunge.fcm_receiver + +import android.content.Context +import android.util.Log +import androidx.work.Worker +import androidx.work.WorkerParameters + +class MyWorker(appContext: Context, workerParams: WorkerParameters) : Worker(appContext, workerParams) { + + override fun doWork(): Result { + Log.d(TAG, "Performing long running task in scheduled job") + // TODO(developer): add long running task here. + return Result.success() + } + + companion object { + private val TAG = "MyWorker" + } +} diff --git a/app/src/main/res/drawable-hdpi-v11/ic_stat_ic_notification.png b/app/src/main/res/drawable-hdpi-v11/ic_stat_ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8179d7e3b30b8fa27adee5d11140b6b385e442 GIT binary patch literal 743 zcmV?P)d806tZUT(NpJNr_+Bq=ltK3d2jwTbI$XA&bvMDBf3~q7xR!BWM)%lf?r9^i;?X0{kO1hh*!P!B3CXa;Z&=n?De7cdKW2;2fj0lxd1 zB)v?c%xoO+Leh_F;IyEnz`-(sd|e%lj)QK10UeUI#-BB_4Zt>Ffuv(0Kt2u2Dg^oo z^p5@SJ<#A&>3=h`&47b?Ib2dl2#{~_)(mT7H?S612l!}}ruwv`IUzuAfngayAAmE! zqQpB-B#o^LWM+c_pN0_ayQDt#f?9wZAv95pMoE6Am2EY5nVGEtb_4{?ueQ_DfJ#X< zlxe@D<+(=4%(_PhVp}K;a7EJeyr90oRiH5-=mF3o>1(-|Ri`Z4VV%I3fS^~vWJz!G zfJOpO0UxPQ?GrFj(z84uPl%5~Nn&xDCEdvbS_ya>2;Ejl+Ls4(xXke%0(V5x!aN|q z>x>T}NW|!rG$|9v%!UK63&4~@4wCdS8NcGTH#0xHE)@v!JNe}-AYaVBsEcZQB(2H{ zng%HtrR32%aUZHqpvR%^o zYA@Biew1D|vz~y%jwkA~S}0EyOMtVIe%E?9H7Euf7%lepSZQ6ZA5We;fxVS7d!}=! z)|Z%Bf54Cb*-`TKkMp|h3vkM-4oRPD#mTjXss%N(rl@A~-}`>umE^y;002ovPDHLkV1m5pPpAL@ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/firebase_lockup_400.png b/app/src/main/res/drawable-hdpi/firebase_lockup_400.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb21fecd1d75c4d52afcab40f464155a53c68f3 GIT binary patch literal 8076 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi-v11/ic_stat_ic_notification.png b/app/src/main/res/drawable-mdpi-v11/ic_stat_ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4107533893cfedc6db00609b050e261c562f11 GIT binary patch literal 531 zcmV+u0_^>XP)~JS^h;WFz|0yY?fwgv1&jgrLLrZ67-$3@0#77;$&362 znAsuVrFR~R>;ZRxW56R|G$4OsGqck`gQTT2G!1A8`JYQn_zD~WjsyOC&|@>R%fM5> zS9C+t_gW+kI3ED-IBR%puYt$Fi2z)a^eGQ;9hduJMSkddLUjIdSpi-E%aVT7+poGny#n=~{|2Ta Vml+FOn?L{n002ovPDHLkV1i+<-gp22 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/firebase_lockup_400.png b/app/src/main/res/drawable-mdpi/firebase_lockup_400.png new file mode 100644 index 0000000000000000000000000000000000000000..ffed5b182569bae67e7fe0ac200522d856bdec9f GIT binary patch literal 4689 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_stat_ic_notification.png b/app/src/main/res/drawable-mdpi/ic_stat_ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..242de9b842044d0bdefba4dba1a29a3552aff278 GIT binary patch literal 552 zcmV+@0@wYCP)X1^@s6IQ*`u0005+NklgrbzK@jonAh-u{4|SDm%rqhk1>Pkbb2X{wZ!~n+QaVbfX$AplduIpZvQo4i?D3wYd zc7qHcilVhNO&?^NJN+GP#n~l}cr64jRB{G}`2xU(;HH<2ay{ zg6uaarE7?|B&DnXz-ABxH~#?`V{Wlne4D1}DMW+}nXiRHVOuFhg%H%X?RT@;>;hv< zWXRtRdcEGV*7}W7>eya`BZPcM#B;S;?S}yjhr{!n^DV74S?pkE4FKHpyo*5)yf=U- zitfa5Jlrp~KLhrw)#|zd3*teta^!)1jx%a;3ec$`L*FFC}&pFTezUO()@_ogai^kl48UcuiBY^9G zM}em$#i%|+Qvmk>mjkZ@b0jSvHvq2!M*_bB*8>YA{Wb~^O(XCPuyt|xec)_KpNs{7 zh}aES(c$c$!0o^dl71gHh}sc|h(mxkCpo$n*hkWr;{f0);La|N-UrN;^q1EnViVv} zU}NAeNxw`5xF!*}7r3m8Gd}?*NqVgSI0x`v1GqxcL;n{5%Yb8gII|Qu1K19D05}fT z)tWbe^CW%V3q(Zh0<4wveI1~+A`lV&n$G#V_c-J`e{EnZ;AUW2+2=QM3ou`jAN{{1 zB2F%KWu>HxrxL(kz{|i+Jr4OB_zd_FIIw*EbvFv|)w)E|$DO(n;V8{_5&*shrc3%c z3!-iWP6ZYM+hh;u*ylobCGfDL5D`B6&~nxGE&B}oC`qm@DX9zKd}ow$MN$V$+T;p; zfut1?Vdoc=NKI^Wrtts9IDI+;`7JaN7dp2d9|E@l`%g0B^&2Jmy`-cr0DqY? zf%Q_>yKnjeu%ml)S#}LsB*~FZNg6;zYzsUI9GkM-Y?B}RGD*j0)$0J*yFB27v&I|l z`v92PuV!@Gtpi{Na6hnTL&vgep91GfdMl$)2f(b7uXoHCZn0-o>8YN{*r)?wE^sTb zS;laSJ+1|A&AT;>|1p~a5D^=d*5K+Ej%8JyiQIBrlTpY5aOJ%NNT;{V;eGZjDjjTP zW0wWs=FR>72`wGVsz2|7DQRVuLKc84<|C8JewFPu>+b=xCB0i^Bn!YP)Kz%dq!+8~WdXPgeHK{1%HV+3P1kq;a^>$Ul>kZxGKrN+YgGrY82j=RB95T6@a@7*E0$X4_5I+ znFuTfT*yWtOC_DyHUjfp)`4AzjKG7n+BW;F<*33$$D!fnX2q7m2aS%c0|lB1CFCJ2>Ht6sw5|jTG9wW ziHg|?kA0^Aj!xZ9)nC`e%9OmPz2!}Q*ER-FKx|t66_^q~2yokxk*~`&@qgwelK#jj zb=%Vlz=Xkw*ttCPnT5IAyoW=cas7kDy_J8E|IpO&3B7>;=m0VuFfBL-*bmsCteFda zyNsnT0jru^mnn-tr{Rd$5HR_5I&fNf8*Yss2Ud6cL(?V-1C2l%N1E!6J%E1zGGIzT ToB3EJ00000NkvXXu0mjfpi>PJ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/firebase_lockup_400.png b/app/src/main/res/drawable-xhdpi/firebase_lockup_400.png new file mode 100644 index 0000000000000000000000000000000000000000..78a4a2780f4caca206ce1065452cc98a36010c9c GIT binary patch literal 9439 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 A_y7O^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_ic_notification.png b/app/src/main/res/drawable-xhdpi/ic_stat_ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..a98fc54a30b0513db86a25ff6376ee45f5d9c579 GIT binary patch literal 1067 zcmV+`1l0S9P)NkldOWTi-ElATO9kR^eRlHInu z*-SRc?og$O;GwLDhk`w6iykZ@RFGEbVNtXqELdbWf8M+|@5wA3N#mN#tV8#bcNu2h z@BMzC`TleaK{%4hWUhI( zmSvrE9Oqp@5WY<$5-%Wxcwhk2G{2*i9`j3biuIuf<0E>%@w>akybk)FJLA$?4B9TqT*rSS~yiN$2BZNq9zbJ~oVvG;Y z%*@;l46v}UfH~)KuLA$|9*f0(pp?2(H}1g!z^0-okEGM--va@-1=MP_uKEq`+IhCU ziYbb6Ae~PC6bPVRujkwC_UWBWt==)REbE%4nSlV7mX#{;yt$Z5N_it#+{8Zhs$!{GN|! zH0ti8|14DA_iX{{_4>=LR_pUH0Te|!F*P-H!IuK2X}*Cm{_y|izI*)0$Vgt(w6ned zs?}-*W1J1M24q=2uj~3-z5ptf%BL9PSHo05lB6%Dr>9@^1u#E9e}gf0AWQ`$N%}FD z%RM#_V0Cp>Tw7bCZtyUht7fOu5e>s&-G2Wy3u?96v(0AnN|?btU!$X=Pp49;Z~6jM zDwWU+(5od?RZUIP^u7S)a{01t+s}nrfL<+0l5{1P%RN6R1tS|98?PaRP65EfA*JGH z04T-d@sE4&6@AZyv$L}$gwUG+u+P03>;PsR06wy9yI>fG?RzuoHY}A&`$bXAGR86p zp@`3^NjT@{Ip=4J#o{mhzL^zvMi5r&ff-r2xIJh$8kO}3?uOED6j&9 l;DYuK0fq_;71(tJ{swEi(^0xXeV_mU002ovPDHLkV1h+W{(1la literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi-v11/ic_stat_ic_notification.png b/app/src/main/res/drawable-xxhdpi-v11/ic_stat_ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..779cbdd90f997af2b485372bab6f4f7b2cbdc2cb GIT binary patch literal 2022 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 bgK6nhfQ)(fNFf-|^ubpFq5jQZM(6$uRss{% literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_ic_notification.png b/app/src/main/res/drawable-xxhdpi/ic_stat_ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..68df56d1d6739db45a6ce1314c7d1634dcd9129d GIT binary patch literal 1948 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 BRa^i7 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..2a4f1f6 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,42 @@ + + + + + + +