Androidpush

Types of vendor errors in Androidpush and their resolutions

In this guide, we'll cover all the errors returned by the vendor when SuprSend initiates a send call to the vendor. In case of vendor error, you'll see Trigger failed or Failure by Vendor status in the third step of the logs. Hover over the failed chip to access the specific error message.


FCM - Legacy API

ErrorHow to solve?
Post "https://fcm.googleapis.com/fcm/send": context deadline exceededThis happens when FCM server took longer than the timeout period to process the request. This can happen due to one of the following reasons:
- The application has a defined timeout deadline and the FCM server takes longer than that to respond.
- Slow or unstable network connections between the application and the FCM server.
- FCM server is experiencing high server loads or temporary issues.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.
Post "https://fcm.googleapis.com/fcm/send": dial tcp xxxx: connect: network is unreachable
Post "https://fcm.googleapis.com/fcm/send": net/http: TLS handshake timeout
Post "https://fcm.googleapis.com/fcm/send": read xxxx: read: connection reset by peerThe "Connection reset by peer" logs are likely being caused by the HTTPS Load Balancer in GCP having a timeout of 600 seconds. Please reach out to our support in case of this issue.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.
Post "https://fcm.googleapis.com/fcm/send": unexpected EOF
QUOTA_EXCEEDED: Resource has been exhausted (e.g. check quota).This indicates that FCM time limit or rate limit quota is exhaused. You can check for allowed quota here.
Request contains an invalid argument; INVALID_ARGUMENT: The registration token is not a valid FCM registration token;
UNREGISTERED_DEVICE | INVALID_REGISTRATION_TOKEN: Requested entity was not found.;
404 error: 404 Not Found
This error occurs when the client FCM token becomes invalid. An existing registration token may cease to be valid in a number of scenarios:
- The client app unregisters with FCM.
- User uninstalls / reinstalls the application
- The registration token expires (for example, Google might decide to refresh registration tokens).
- The client app is updated but the new version is not configured to receive messages.

SuprSend automatically flags these tokens as invalid in user profile, since once an FCM token becomes invalid, it is never going to be valid again. You don't have to explicitly handle these cases as SuprSend SDK handles token refresh as soon as the user installs the App or become active again.
Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.FCM vendor credentials are not valid or expired. Check FCM vendor documentation for details.
SENDER_ID_MISMATCH: SenderId mismatchSender ID in FCM vendor form is not valid.
A registration token is tied to a certain group of senders. When a client app registers for FCM, it must specify which senders are allowed to send messages. You should use one of those sender IDs when sending messages to the client app. If you switch to a different sender, the existing registration tokens won't work. Check FCM vendor documentation for details.
The service is currently unavailable.Indicates that FCM service is currently unavailable, often due to issues on the Firebase server side. In such instances, SuprSend automatically retries the request. Here are some recommended steps that you can take:
- Check Firebase status page for ongoing incidents or outages affecting the FCM service.
- Check for Firebase updates on Firebase google channel and release notes. FCM environment regularly gets software releases. Some of them may not be fully ready for production use and cause these failures.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.
Internal error encountered; internal server error; 500 error: 500 Internal Server ErrorThe FCM server encountered an error while trying to process the request. SuprSend has implemented exponential back-off retry mechanism to handle such errors. If you continue to receive this error, you should raise it to FCM support.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.
message is too bigCheck that the total size of the payload data included in a message does not exceed FCM limits: FCM has a maximum allowed size of 4KB, which enforces a 1000 character limit. The limit drops to 2KB (500 characters) if the message includes an image URL. Also, ensure that the image size URL is of size 2KB.
code: 500, name: AttributeError, description: module 'collections' has no attribute 'Iterable'The FCM server encountered an error while trying to process the request. SuprSend has implemented exponential back-off retry mechanism to handle such errors. If you continue to receive this error, you should raise it to FCM support.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.
401: Authentication Error; Authentication backend unknown error; Authentication backend unavailable.The sender account used to send a message couldn't be authenticated. Possible causes are:
- Authorization header missing or with invalid syntax in HTTP request.
- The Firebase project that the specified server key belongs to is incorrect.
- Legacy server keys only—the request originated from a server not whitelisted in the Server key IPs.

Check that the token you're sending inside the Authentication header is the correct server key associated with your project. See Checking the validity of a server key for details. If you are using a legacy server key, you're recommended to upgrade to a new key that has no IP restrictions. See Migrate legacy server keys.
502 error: 502 Bad GatewayThe FCM server encountered an error while trying to process the request. SuprSend has implemented exponential back-off retry mechanism to handle such errors. If you continue to receive this error, you should raise it to FCM support.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.
500: read tcp xxxx: i/o timeoutThe FCM server encountered an error while trying to process the request. SuprSend has implemented exponential back-off retry mechanism to handle such errors. If you continue to receive this error, you should raise it to FCM support.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.
500: dial tcp: lookup db-suprsend-production-do-user-9199186-0.b.db.ondigitalocean.com on 10.245.0.10:53: server misbehavingThe FCM server encountered an error while trying to process the request. SuprSend has implemented exponential back-off retry mechanism to handle such errors. If you continue to receive this error, you should raise it to FCM support.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.

You can find the entire list of FCM errors here.


FCM - V1 version

ErrorHow to solve?
INVALID_ARGUMENT; (HTTP error code = 400) Request parameters were invalid.Potential causes include invalid registration, invalid package name, message too big, invalid data key, invalid TTL, or other invalid parameters.
- Invalid registration: Check the format of the registration token you pass to the server. Make sure it matches the registration token the client app receives from registering with Firebase Notifications. Do not truncate or add additional characters.
- Invalid package name: Make sure the message was addressed to a registration token whose package name matches the value passed in the request.
- Message too big: Check that the total size of the payload data included in a message does not exceed FCM limits: 4KB (1000 characters)
- Invalid data key: Check that the payload data does not contain a key (such as from, or gcm, or any value prefixed by google) that is used internally by FCM. Note that some words (such as collapse_key) are also used by FCM but are allowed in the payload, in which case the payload value will be overridden by the FCM value.
- Invalid TTL: Check that the value used in ttl is an integer representing a duration in seconds between 0 and 2,419,200 (4 weeks).
- Invalid parameters: Check that the provided parameters have the right name and type.
UNSPECIFIED_ERROR; No more information is available about this error.FCM has not provided any details about the error and if you continue to receive this error, you should raise it to FCM support.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.
SENDER_ID_MISMATCH; (HTTP error code = 403) The authenticated sender ID is different from the sender ID for the registration token.Sender ID in FCM vendor form is not valid.
A registration token is tied to a certain group of senders. When a client app registers for FCM, it must specify which senders are allowed to send messages. You should use one of those sender IDs when sending messages to the client app. If you switch to a different sender, the existing registration tokens won't work. Check FCM vendor documentation for details.
QUOTA_EXCEEDED: (HTTP error code = 429) Sending limit exceeded for the message target.This error can be caused by exceeded message rate quota, or exceeded device message rate quota.
- Message rate exceeded: The sending rate of messages is too high. SuprSend internally optimize for the sending rate. Reach out to our support in case of this error.
- Device message rate exceeded: The rate of messages to a particular device is too high. See message rate limit to a single device.
UNAVAILABLE; (HTTP error code = 503) The server is overloaded.Indicates that FCM service is currently unavailable, often due to issues on the Firebase server side. In such instances, SuprSend automatically retries the request. Here are some recommended steps that you can take:
- Check Firebase status page for ongoing incidents or outages affecting the FCM service.
- Check for Firebase updates on Firebase google channel and release notes. FCM environment regularly gets software releases. Some of them may not be fully ready for production use and cause these failures.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.
INTERNAL; (HTTP error code = 500) An unknown internal error occurred.The FCM server encountered an error while trying to process the request. SuprSend has implemented exponential back-off retry mechanism to handle such errors. If you continue to receive this error, you should raise it to FCM support.

You can also setup channel routing so that user gets notification on the next best channel if androidpush is unreachable.

You can find the entire list of FCM errors for V1 version here.