user32826
user32826

Reputation:

Firebase Cloud Messaging returning InvalidApnsCredential despite valid P8 APNs Auth Key existing

I am trying to send notifications to an IOS device using Firebase Cloud Messaging - every IOS project in the Firebase Console has a valid APNs P8 Auth Key, freshly generated from the Apple developer account for this purpose.

I’m using this approach:

curl -X POST \
  https://fcm.googleapis.com/fcm/send \
  -H 'Authorization: key=<My Key>' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
    "to": "<Device Token>",
    "notification": {
        "title": "Push Notification Test to IOS",
        "body":"Push Notification Test to IOS"
    },
    "data": {
        "message": "Push Notification Test to IOS"
    }
}'

This results in the following error from FCM:

{
    "multicast_id": <Id>,
    "success": 0,
    "failure": 1,
    "canonical_ids": 0,
    "results": [
        {
            "error": "InvalidApnsCredential"
        }
    ]
}

If I remove the "notification" block from the message, FCM responds with a success, but nothing is received on the device.

I can send and receive notifications using the above example message to Android devices just fine.

The FCM documentation suggests that when a "notification" block is included, FCM attempts to send via APNs when the token is for an IOS device:

If a notification payload is provided, or the content_available option is set to true for a message to an iOS device, the message is sent through APNs, otherwise it is sent through the FCM connection server.

What I have tried:

Upvotes: 14

Views: 6318

Answers (2)

matiszz
matiszz

Reputation: 616

Make sure that your Bundle ID is correct.

If it's not the same, create a new iOS app (ConfigurationGeneralAdd an app) and make sure to set the name correctly.

In my case, I had the shortest version of the bundle ID (com.company) instead of the long one (com.company.appname).

Doing this you should not need to re-compile and re-upload the app.

Upvotes: 0

MoOx
MoOx

Reputation: 8991

InvalidApnsCredential doesn't means the issue is directly related to the APNS certificate nor the key.

I my case, I faced this problem with a white labeled app & after investigation, I found that my app bundle id (PRODUCT_BUNDLE_IDENTIFIER) was not matching the one in Firebase (I was using a development bundle id instead of the production one).

Upvotes: 0

Related Questions