From 076ba7b260fdefcbd14e8cfc823a74323ab1d299 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 26 May 2025 16:50:10 +0000 Subject: [PATCH 1/2] Add live_activity_token to `APNSConfig`, allowing you to specify this token for APNS messages. This change introduces: - Adding the `live_activity_token` field to the `APNSConfig` class - Updated unit test to verify that the `live_activity_token` is correctly included in the encoded message --- firebase_admin/_messaging_encoder.py | 3 +++ firebase_admin/_messaging_utils.py | 4 +++- tests/test_messaging.py | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/firebase_admin/_messaging_encoder.py b/firebase_admin/_messaging_encoder.py index d7f23328..692dbc7a 100644 --- a/firebase_admin/_messaging_encoder.py +++ b/firebase_admin/_messaging_encoder.py @@ -530,6 +530,9 @@ def encode_apns(cls, apns): 'payload': cls.encode_apns_payload(apns.payload), 'fcm_options': cls.encode_apns_fcm_options(apns.fcm_options), } + if apns.live_activity_token: + result['live_activity_token'] = _Validators.check_string( + 'APNSConfig.live_activity_token', apns.live_activity_token, non_empty=True) return cls.remove_null_values(result) @classmethod diff --git a/firebase_admin/_messaging_utils.py b/firebase_admin/_messaging_utils.py index ae1f5cc5..4800bb56 100644 --- a/firebase_admin/_messaging_utils.py +++ b/firebase_admin/_messaging_utils.py @@ -334,15 +334,17 @@ class APNSConfig: payload: A ``messaging.APNSPayload`` to be included in the message (optional). fcm_options: A ``messaging.APNSFCMOptions`` instance to be included in the message (optional). + live_activity_token: An optional string that identifies the live activity to update. .. _APNS Documentation: https://developer.apple.com/library/content/documentation\ /NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html """ - def __init__(self, headers=None, payload=None, fcm_options=None): + def __init__(self, headers=None, payload=None, fcm_options=None, live_activity_token=None): self.headers = headers self.payload = payload self.fcm_options = fcm_options + self.live_activity_token = live_activity_token class APNSPayload: diff --git a/tests/test_messaging.py b/tests/test_messaging.py index 45a5bc6d..54173ea9 100644 --- a/tests/test_messaging.py +++ b/tests/test_messaging.py @@ -1094,7 +1094,8 @@ def test_apns_config(self): topic='topic', apns=messaging.APNSConfig( headers={'h1': 'v1', 'h2': 'v2'}, - fcm_options=messaging.APNSFCMOptions('analytics_label_v1') + fcm_options=messaging.APNSFCMOptions('analytics_label_v1'), + live_activity_token='test_token_string' ), ) expected = { @@ -1107,6 +1108,7 @@ def test_apns_config(self): 'fcm_options': { 'analytics_label': 'analytics_label_v1', }, + 'live_activity_token': 'test_token_string', }, } check_encoding(msg, expected) From d0af61a32dda8262fe04681118217628bd3dd596 Mon Sep 17 00:00:00 2001 From: jonathanedey Date: Mon, 26 May 2025 13:11:33 -0400 Subject: [PATCH 2/2] Refactor and edit doc string --- firebase_admin/_messaging_encoder.py | 5 ++--- firebase_admin/_messaging_utils.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/firebase_admin/_messaging_encoder.py b/firebase_admin/_messaging_encoder.py index 692dbc7a..32f97875 100644 --- a/firebase_admin/_messaging_encoder.py +++ b/firebase_admin/_messaging_encoder.py @@ -529,10 +529,9 @@ def encode_apns(cls, apns): 'APNSConfig.headers', apns.headers), 'payload': cls.encode_apns_payload(apns.payload), 'fcm_options': cls.encode_apns_fcm_options(apns.fcm_options), + 'live_activity_token': _Validators.check_string( + 'APNSConfig.live_activity_token', apns.live_activity_token), } - if apns.live_activity_token: - result['live_activity_token'] = _Validators.check_string( - 'APNSConfig.live_activity_token', apns.live_activity_token, non_empty=True) return cls.remove_null_values(result) @classmethod diff --git a/firebase_admin/_messaging_utils.py b/firebase_admin/_messaging_utils.py index 4800bb56..8fd72070 100644 --- a/firebase_admin/_messaging_utils.py +++ b/firebase_admin/_messaging_utils.py @@ -334,7 +334,7 @@ class APNSConfig: payload: A ``messaging.APNSPayload`` to be included in the message (optional). fcm_options: A ``messaging.APNSFCMOptions`` instance to be included in the message (optional). - live_activity_token: An optional string that identifies the live activity to update. + live_activity_token: A live activity token string (optional). .. _APNS Documentation: https://developer.apple.com/library/content/documentation\ /NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html