Push Notifications
Hi Kenneth,
Working through the push process, see the diagram below from the Push Gateway API.
From a high-level, the user installs the client, for example on an iOS device or Android device. The client is configured with the push gateway location (URL) and also acquires a push key to identify itself from it's push provider, Apple Push Notification (APN) service or Firebase Cloud Messaging (FCM). The client then registers a pusher on the users' homeserver providing the URL, push key etc.
So, on the Matrix Homeserver (Synapse), a pusher is registered for a user. The pusher information details:
app_display_name: A string that will allow the user to identify what application owns this pusher.
app_id: This is a reverse-DNS style identifier for the application. Max length, 64 chars.
url: The URL to use to send notifications to the push gateway.
device_display_name: A string that will allow the user to identify what device owns this pusher.
pushkey: This is a unique identifier for this pusher. (Acquired from APN / FCM)
Relevant links:
See an example of a set pusher from the Client-Server APIs Push Notifications section:
{
"pushers": [
{
"app_display_name": "Appy McAppface",
"app_id": "face.mcapp.appy.prod",
"data": {
"url": "https://example.com/_matrix/push/v1/notify"
},
"device_display_name": "Alice's Phone",
"kind": "http",
"lang": "en-US",
"profile_tag": "xyz",
"pushkey": "Xp/MzCt8/9DcSNE9cuiaoT5Ac55job3TdLSSmtmYl4A="
}
]
}
When a notification is recieved the homeserver sends this information to the registered Push Gateway, i.e. Sygnal from the users' pushers. The push gateway is where you configure your App Types (apns / gcm). The push gateway, Sygnal in this instance, recieves the request and forwards it to the required notification service (APN or FCM) using the pushkey. If successful, the push gateway confirms the success to the homeserver.
You can find a very good overview of the entire process on our Sygnal, our push gateway's, Notes for Application Developers.
Hopefully the above clarifies, so regarding your specific questions, the answers would be:
what information the payload holds regarding the specific device?
How does e.g Apple APNS know that my device is suppose to get the push notice?
Does the payload hold any information about my device? E.g IMEI etc?