So, when sending a notification to an Android device you can give a tag property:
"notification": {
"title": title,
"body": message,
"sound": sound,
"tag": "STRING_TO_GROUP_NOTIFICATIONS_BY"
}
This groups notifications with the same tag together so that they don't make a mess of the users notifications when there are a lot and only shows the newest one.
This is really useful in say, a chat app, with multiple channels that receive lots of messages so you can group by channel and minimize the amount of noise in the user's notifications.
Anways...
Is there any way to do this with iOS?
Firebase Cloud Messaging (FCM), formerly known as Google Cloud Messaging (GCM), is a cross-platform cloud solution for messages and notifications for Android, iOS, and web applications, which as of June 2022 can be used at no cost.
Does Firebase messaging work on iOS simulator? FCM via APNs does not work on iOS Simulators. To receive messages & notifications a real device is required.
The app request APNs for a device token. Then it sends that device token to FCM (Firebase Cloud Messaging) and in return receives FCM device token. Now this token can be send to your server/cloud function which is keeping track of all these unique device tokens which will be used to send notification.
Update: apns-collapse-id
is already available for FCM v1:
FCM provides a specific set of delivery options for messages sent to Android devices, and allows for similar options on iOS and web. For example, "collapsible" message behavior is supported on Android via FCM's collapse_key, on iOS via
apns-collapse-id
, and on JavaScript/Web via Topic. For details, see descriptions in this section and related reference documentation
The tag
parameter is currently only supported for Android (which you probably already know which is why you're looking for iOS) and there is currently no counterpart for it in iOS.
From my answer here:
In order to bundle notifications in iOS, you'll have to specify a thread-id
:
Provide this key with a string value that represents the app-specific identifier for grouping notifications. The system groups notifications with the same thread identifier together in Notification Center and other system interfaces. For local notifications, this key corresponds to the threadIdentifier property of the UNNotificationContent object.
However, there is currently no parameter counterpart for thread-id
in FCM. What you could try and do is make use of a data
message payload and specify the thread-id
as a custom key-value pair.
Some possibly helpful posts:
According to the documentation tag
would not group but replace notifications.
AndroidNotification
tag
- Identifier used to replace existing notifications in the notification drawer. If not specified, each request creates a new notification. If specified and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer.
The apns
header serving the same purpose is apns-collapse-id
But the question body is describing grouping and to achieve that on iOS you can use thread-id
- notifications with the same thread-id
are stacked together with the latest on top
To specify thread-id
using the REST API you should put the value under payload: apns.payload.aps.thread-id
While to specify an apns-collapse-id
it should be added under headers: apns.headers.apns-collapse-id
APNS Config reference
There are some more details in this SO answer, describing thread-id
, apns-collapse-id
and collapsibleKey
, what each does and sample usage
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With