diff --git a/admin/mobile-app-settings.php b/admin/mobile-app-settings.php index 1c9891a..cc92f58 100644 --- a/admin/mobile-app-settings.php +++ b/admin/mobile-app-settings.php @@ -36,7 +36,19 @@ if (isset($_POST['twp_test_notification']) && check_admin_referer('twp_mobile_se // Save settings if (isset($_POST['twp_save_mobile_settings']) && check_admin_referer('twp_mobile_settings')) { - update_option('twp_fcm_server_key', sanitize_text_field($_POST['twp_fcm_server_key'])); + update_option('twp_fcm_project_id', sanitize_text_field($_POST['twp_fcm_project_id'])); + // Service account JSON — validate it parses as JSON before saving + $sa_json_raw = isset($_POST['twp_fcm_service_account_json']) ? wp_unslash($_POST['twp_fcm_service_account_json']) : ''; + if (!empty($sa_json_raw)) { + $sa_parsed = json_decode($sa_json_raw, true); + if ($sa_parsed && isset($sa_parsed['client_email'], $sa_parsed['private_key'])) { + update_option('twp_fcm_service_account_json', $sa_json_raw); + } else { + $sa_json_error = 'Invalid service account JSON — must contain client_email and private_key fields.'; + } + } else { + update_option('twp_fcm_service_account_json', ''); + } update_option('twp_auto_update_enabled', isset($_POST['twp_auto_update_enabled']) ? '1' : '0'); update_option('twp_gitea_repo', sanitize_text_field($_POST['twp_gitea_repo'])); update_option('twp_gitea_token', sanitize_text_field($_POST['twp_gitea_token'])); @@ -48,7 +60,9 @@ if (isset($_POST['twp_save_mobile_settings']) && check_admin_referer('twp_mobile } // Get current settings -$fcm_server_key = get_option('twp_fcm_server_key', ''); +$fcm_project_id = get_option('twp_fcm_project_id', ''); +$fcm_service_account_json = get_option('twp_fcm_service_account_json', ''); +$fcm_sa_configured = !empty($fcm_service_account_json) && !empty($fcm_project_id); $auto_update_enabled = get_option('twp_auto_update_enabled', '1') === '1'; $gitea_repo = get_option('twp_gitea_repo', 'wp-plugins/twilio-wp-plugin'); $gitea_token = get_option('twp_gitea_token', ''); @@ -90,6 +104,12 @@ $total_sessions = $wpdb->get_var("SELECT COUNT(*) FROM $sessions_table"); + +
+

+
+ +
@@ -118,26 +138,45 @@ $total_sessions = $wpdb->get_var("SELECT COUNT(*) FROM $sessions_table");
-

Firebase Cloud Messaging (FCM)

-

Configure FCM to enable push notifications for the mobile app.

+

Firebase Cloud Messaging (FCM) — HTTP v2 API

+

Configure FCM using a service account for push notifications. The legacy server key API has been retired by Google.

+ + + +
- + + placeholder="my-project-12345">

- Get your server key from Firebase Console > Project Settings > Cloud Messaging > Server Key + Found in Firebase Console > Project Settings > General > Project ID

+ + + +

+ Generate in Firebase Console > Project Settings > Service Accounts > Generate New Private Key. + Paste the entire JSON file contents here. Must contain client_email and private_key fields. +

+ +

✓ Service account configured

+ +
@@ -181,13 +220,13 @@ $total_sessions = $wpdb->get_var("SELECT COUNT(*) FROM $sessions_table"); class="regular-text" placeholder="CR...">

- Twilio Push Credential SID. Create in Twilio Console > Messaging > Push Credentials using your FCM server key. Required for incoming call push notifications. + Twilio Push Credential SID. Create in Twilio Console > Messaging > Push Credentials using your FCM service account JSON. Required for incoming call push notifications.

- +