From 518b86509e9c8b3ccb43b7ee0c5c77257b1ccb9d Mon Sep 17 00:00:00 2001 From: jeffallen Date: Wed, 23 Jul 2025 20:20:36 +0000 Subject: [PATCH 1/5] Rename demo-app from FCM App to Remote Notify Demo App with proper git history - Use git mv to preserve file history when moving Kotlin files - Change package name from org.nella.fcmapp to org.nella.RN.demo (capital RN) - Update applicationId and namespace in build.gradle to new package name - Rename FCMService to RnDemoService class and update all references - Update AndroidManifest.xml with new service name and theme references - Change app name from 'FCM App' to 'Remote Notify Demo App' in strings.xml - Update theme name from Theme.FCMApp to Theme.RemoteNotifyDemoApp - Replace user-facing 'FCM' references with 'notification' terminology - Change default backend URL to https://demo.rn.nella.org - Update README.md with new app name, package references, and default URL - Maintain Firebase-specific technical terms where appropriate - Update SharedPreferences name from FCMAppSettings to RnDemoSettings - Change notification channel ID from fcm_default_channel to rn_demo_channel - Update all UI hints and examples to use new demo.rn.nella.org domain - Preserve all Firebase Cloud Messaging functionality and dependencies Co-Authored-By: sketch Change-ID: s2f8322e1907a4366k --- demo-app/README.md | 12 ++++++------ demo-app/app/build.gradle | 4 ++-- demo-app/app/src/main/AndroidManifest.xml | 8 ++++---- .../org/nella/{fcmapp => RN/demo}/MainActivity.kt | 12 ++++++------ .../FCMService.kt => RN/demo/RnDemoService.kt} | 14 +++++++------- .../nella/{fcmapp => RN/demo}/SettingsActivity.kt | 6 +++--- .../app/src/main/res/layout/activity_settings.xml | 6 +++--- demo-app/app/src/main/res/values/strings.xml | 2 +- demo-app/app/src/main/res/values/themes.xml | 2 +- 9 files changed, 33 insertions(+), 33 deletions(-) rename demo-app/app/src/main/java/org/nella/{fcmapp => RN/demo}/MainActivity.kt (95%) rename demo-app/app/src/main/java/org/nella/{fcmapp/FCMService.kt => RN/demo/RnDemoService.kt} (88%) rename demo-app/app/src/main/java/org/nella/{fcmapp => RN/demo}/SettingsActivity.kt (95%) diff --git a/demo-app/README.md b/demo-app/README.md index b231a48..f50b764 100644 --- a/demo-app/README.md +++ b/demo-app/README.md @@ -1,6 +1,6 @@ -# FCM Android Demo App +# Remote Notify Demo App -Android client that registers FCM tokens using hybrid encryption and receives push notifications. +Android client that registers notification tokens using hybrid encryption and receives push notifications. ## Setup @@ -8,7 +8,7 @@ Android client that registers FCM tokens using hybrid encryption and receives pu 1. Go to [Firebase Console](https://console.firebase.google.com/) 2. Create or select a project -3. Add Android app with package name: `org.nella.fcmapp` (demo app) +3. Add Android app with package name: `org.nella.RN.demo` (demo app) 4. Download `google-services.json` and replace the placeholder in `app/` directory ### 2. Public Key @@ -20,11 +20,11 @@ Ensure `app/src/main/assets/public_key.pem` contains the RSA public key (see mai 1. Open project in Android Studio 2. Sync project to download dependencies 3. Run on device or emulator -4. Tap "Register Device Token" to encrypt and send FCM token +4. Tap "Register Device Token" to encrypt and send notification token ## Features -- Single-button FCM token registration +- Single-button notification token registration - Client-side hybrid encryption (AES-256-GCM + RSA-4096) - Automatic certificate bypass for development servers - Push notification handling @@ -45,7 +45,7 @@ Sends encrypted token to `https://10.0.2.2:8443/register` (emulator) with payloa ## Dependencies -- Firebase Cloud Messaging: `com.google.firebase:firebase-messaging-ktx:23.3.1` +- Firebase Cloud Messaging: `com.google.firebase:firebase-messaging-ktx:24.1.2` - OkHttp: `com.squareup.okhttp3:okhttp:4.12.0` - AndroidX UI components diff --git a/demo-app/app/build.gradle b/demo-app/app/build.gradle index 390f96f..5a6eeb4 100644 --- a/demo-app/app/build.gradle +++ b/demo-app/app/build.gradle @@ -5,11 +5,11 @@ plugins { } android { - namespace 'org.nella.fcmapp' + namespace 'org.nella.RN.demo' compileSdk 36 defaultConfig { - applicationId "org.nella.fcmapp" + applicationId "org.nella.RN.demo" minSdk 21 targetSdk 34 versionCode 1 diff --git a/demo-app/app/src/main/AndroidManifest.xml b/demo-app/app/src/main/AndroidManifest.xml index da2596b..83333ca 100644 --- a/demo-app/app/src/main/AndroidManifest.xml +++ b/demo-app/app/src/main/AndroidManifest.xml @@ -13,13 +13,13 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/Theme.FCMApp" + android:theme="@style/Theme.RemoteNotifyDemoApp" android:networkSecurityConfig="@xml/network_security_config" tools:targetApi="31"> + android:theme="@style/Theme.RemoteNotifyDemoApp"> @@ -30,11 +30,11 @@ android:name=".SettingsActivity" android:exported="false" android:parentActivityName=".MainActivity" - android:theme="@style/Theme.FCMApp" /> + android:theme="@style/Theme.RemoteNotifyDemoApp" /> diff --git a/demo-app/app/src/main/java/org/nella/fcmapp/MainActivity.kt b/demo-app/app/src/main/java/org/nella/RN/demo/MainActivity.kt similarity index 95% rename from demo-app/app/src/main/java/org/nella/fcmapp/MainActivity.kt rename to demo-app/app/src/main/java/org/nella/RN/demo/MainActivity.kt index a7edf31..d74c04e 100644 --- a/demo-app/app/src/main/java/org/nella/fcmapp/MainActivity.kt +++ b/demo-app/app/src/main/java/org/nella/RN/demo/MainActivity.kt @@ -1,4 +1,4 @@ -package org.nella.fcmapp +package org.nella.RN.demo import android.content.Intent import android.os.Bundle @@ -80,20 +80,20 @@ class MainActivity : AppCompatActivity() { } private fun registerDeviceToken() { - updateStatus("Getting FCM token...") + updateStatus("Getting notification token...") registerButton.isEnabled = false FirebaseMessaging.getInstance().token.addOnCompleteListener { task -> if (!task.isSuccessful) { - Log.w(TAG, "Fetching FCM registration token failed", task.exception) - updateStatus("Failed to get FCM token: ${task.exception?.message}") + Log.w(TAG, "Fetching Firebase registration token failed", task.exception) + updateStatus("Failed to get notification token: ${task.exception?.message}") registerButton.isEnabled = true return@addOnCompleteListener } - // Get new FCM registration token + // Get new Firebase registration token val token = task.result - Log.d(TAG, "FCM Registration Token: $token") + Log.d(TAG, "Firebase Registration Token: $token") // Send token to server sendTokenToServer(token) diff --git a/demo-app/app/src/main/java/org/nella/fcmapp/FCMService.kt b/demo-app/app/src/main/java/org/nella/RN/demo/RnDemoService.kt similarity index 88% rename from demo-app/app/src/main/java/org/nella/fcmapp/FCMService.kt rename to demo-app/app/src/main/java/org/nella/RN/demo/RnDemoService.kt index a3e011f..cc02b00 100644 --- a/demo-app/app/src/main/java/org/nella/fcmapp/FCMService.kt +++ b/demo-app/app/src/main/java/org/nella/RN/demo/RnDemoService.kt @@ -1,4 +1,4 @@ -package org.nella.fcmapp +package org.nella.RN.demo import android.app.NotificationChannel import android.app.NotificationManager @@ -11,11 +11,11 @@ import androidx.core.app.NotificationCompat import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage -class FCMService : FirebaseMessagingService() { +class RnDemoService : FirebaseMessagingService() { companion object { - private const val TAG = "FCMService" - private const val CHANNEL_ID = "fcm_default_channel" + private const val TAG = "RnDemoService" + private const val CHANNEL_ID = "rn_demo_channel" } override fun onMessageReceived(remoteMessage: RemoteMessage) { @@ -26,7 +26,7 @@ class FCMService : FirebaseMessagingService() { // Check if message contains a notification payload remoteMessage.notification?.let { Log.d(TAG, "Message Notification Body: ${it.body}") - sendNotification(it.title ?: "FCM Message", it.body ?: "") + sendNotification(it.title ?: "Notification", it.body ?: "") } // Check if message contains a data payload @@ -40,7 +40,7 @@ class FCMService : FirebaseMessagingService() { // If you want to send messages to this application instance or // manage this app's subscriptions on the server side, send the - // FCM registration token to your app server. + // Firebase registration token to your app server. sendRegistrationToServer(token) } @@ -68,7 +68,7 @@ class FCMService : FirebaseMessagingService() { // Since android Oreo notification channel is needed. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val channel = NotificationChannel(channelId, - "FCM Channel", + "RN Demo Channel", NotificationManager.IMPORTANCE_DEFAULT) notificationManager.createNotificationChannel(channel) } diff --git a/demo-app/app/src/main/java/org/nella/fcmapp/SettingsActivity.kt b/demo-app/app/src/main/java/org/nella/RN/demo/SettingsActivity.kt similarity index 95% rename from demo-app/app/src/main/java/org/nella/fcmapp/SettingsActivity.kt rename to demo-app/app/src/main/java/org/nella/RN/demo/SettingsActivity.kt index 2eaa289..538bade 100644 --- a/demo-app/app/src/main/java/org/nella/fcmapp/SettingsActivity.kt +++ b/demo-app/app/src/main/java/org/nella/RN/demo/SettingsActivity.kt @@ -1,4 +1,4 @@ -package org.nella.fcmapp +package org.nella.RN.demo import android.content.Context import android.content.SharedPreferences @@ -17,9 +17,9 @@ class SettingsActivity : AppCompatActivity() { private lateinit var prefs: SharedPreferences companion object { - const val PREFS_NAME = "FCMAppSettings" + const val PREFS_NAME = "RnDemoSettings" const val PREF_BACKEND_URL = "backend_url" - const val DEFAULT_BACKEND_URL = "https://r-notify.nella.org" + const val DEFAULT_BACKEND_URL = "https://demo.rn.nella.org" fun getBackendUrl(context: Context): String { val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) diff --git a/demo-app/app/src/main/res/layout/activity_settings.xml b/demo-app/app/src/main/res/layout/activity_settings.xml index 7f80db6..f1578d8 100644 --- a/demo-app/app/src/main/res/layout/activity_settings.xml +++ b/demo-app/app/src/main/res/layout/activity_settings.xml @@ -24,7 +24,7 @@ android:id="@+id/urlEditText" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="https://r-notify.nella.org" + android:hint="https://demo.rn.nella.org" android:inputType="textUri" android:layout_marginBottom="16dp" android:padding="12dp" @@ -33,7 +33,7 @@ @@ -66,7 +66,7 @@ - FCM App + Remote Notify Demo App diff --git a/demo-app/app/src/main/res/values/themes.xml b/demo-app/app/src/main/res/values/themes.xml index 26ddef6..0f33040 100644 --- a/demo-app/app/src/main/res/values/themes.xml +++ b/demo-app/app/src/main/res/values/themes.xml @@ -1,6 +1,6 @@ -