Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FCM/GCM grouping notifications by "tag" on iOS

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?

like image 407
Christopher Reid Avatar asked Apr 05 '17 02:04

Christopher Reid


People also ask

Is GCM and FCM same?

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 FCM work on iOS simulator?

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.

What is FCM in iOS?

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.


2 Answers

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:

  • https://stackoverflow.com/a/37621274/4625829
  • iOS "thread-id" doesn't group push notifications
  • iOS 10 How to set UNotificationContent threadIdentifier for remote notification
like image 100
AL. Avatar answered Oct 29 '22 19:10

AL.


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

like image 24
kidroca Avatar answered Oct 29 '22 20:10

kidroca