Provider credentials
Upload and validate APNs keys and Firebase service accounts.
No notification can be sent until an APNs key or a Firebase service account has been uploaded. An app can have several credentials per provider. The newest non-revoked credential is selected for sending.
Apple
You need the .p8 key file, its 10-character Key ID, your Team ID, and the app's
Bundle ID.
A .p8 can be downloaded exactly once
Apple shows the file at creation and never again. If you no longer have it, generate a new key in your developer account rather than looking for the old one.
The Bundle ID is what APNs routes by: its topic. A credential that does not name an app cannot send
to one, and getting it wrong produces DeviceTokenNotForTopic on every delivery.
The service account JSON, exactly as Firebase generated it, whole and unedited. The project id is read out of the file.
Scope the service account to Firebase Cloud Messaging rather than Owner. Sending is all it needs to do.
After upload
A credential is sealed on arrival and never readable again. What the page shows afterwards is the key id, the team id, a truncated fingerprint, the date, and a status.
| Status | Meaning |
|---|---|
| Never verified | Uploaded, not yet checked |
| Valid | The provider accepted it |
| Rejected | The provider refused it, and last_error carries their own word for why |
Validation is attempted at upload and daily afterwards. If the provider cannot be reached, there is no new validation result. A credential can stop working between checks; inspect delivery errors as well as its last validation time.
Rotating
Upload the new credential first, verify its status and send to a test device, then delete the old one. Uploading with the same provider and Key ID replaces that credential in place. Deleting the selected credential makes the next newest non-revoked credential eligible; deleting the last one leaves that provider without a credential.