tried to read about these content-negotiation headers but could not find any information about them in internet.
I don't understand this remark. Upon consulting the vendor's documentation a search for the header field, "content-available", immediately reveals:
On iOS, use this field to represent content-available in the APNs payload. When a notification or data message is sent and this is set to true, an inactive client app is awoken. On Android, data messages wake the app by default.
The value defaults to False, so if you don't know what type of client you're sending to and if you support any iOS users that use the Apple Push Notification service, you will likely want to set this flag.
Similarly the "content-priority" documentation explains:
You have two options for assigning delivery priority to downstream messages:
- Normal priority. Normal priority messages are delivered immediately when the app is in the foreground. For backgrounded apps, delivery may be delayed. For less time-sensitive messages, such as notifications of new email, keeping your UI in sync, or syncing app data in the background, choose normal delivery priority.
- High priority. FCM attempts to deliver high priority messages immediately even if the device is in Doze mode.
The vendor documentation seems fairly clear. When serving heterogeneous client types, the headers have orthogonal meanings. The headers are not location dependent. Supply one or both headers if they fit your application's use case.
If you found the documentation ambiguous or wrong, definitely file a documentation bug with the vendor.