firebase / firebase-admin-node

Firebase Admin Node.js SDK

Home Page:https://firebase.google.com/docs/admin/setup

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Messaging] Unable to get messaging to validate APNS payload with apns-push-type header field

devandanger opened this issue · comments

[READ] Step 1: Are you in the right place?

Cloud Firestore support is provided by the @google-cloud/firestore library. Therefore the easiest and most efficient way to get Firestore issues resolved is by directly reporting them at the nodejs-firestore GitHub repo.

If you still think the problem is related to the code in this repository, then read on.

  • For issues or feature requests related to the code in this repository
    file a Github issue.
  • For general technical questions, post a question on StackOverflow
    with the firebase tag.
  • For general Firebase discussion, use the firebase-talk
    google group.
  • For help troubleshooting your application that does not fall under one
    of the above categories, reach out to the personalized
    Firebase support channel.

[REQUIRED] Step 2: Describe your environment

  • Operating System version: iOS
  • Firebase SDK version: 11.11.0
  • Firebase Product: Messaging
  • Node.js version: 16.13.1
  • NPM version: 8.10.1

[REQUIRED] Step 3: Describe the problem

I'm attempting to set more particular fields into the messaging send() function, however I continue to get failures as messaging().send() validates the JSON.

Steps to reproduce:

What happened? How can we make the problem occur?
Any time I add apns-push-type I seem to get these failures

This will print Firestore logs to the console.

>  {"severity":"ERROR","message":"Unhandled error FirebaseMessagingError: Invalid [apns-push-type] set for apns platform\n    at Function.fromServerError (/Users/evananger/Developer/blazebite-functions/functions/node_modules/firebase-admin/lib/utils/error.js:254:16)\n    at createFirebaseError (/Users/evananger/Developer/blazebite-functions/functions/node_modules/firebase-admin/lib/messaging/messaging-errors-internal.js:35:47)\n    at /Users/evananger/Developer/blazebite-functions/functions/node_modules/firebase-admin/lib/messaging/messaging-api-request-internal.js:79:75\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)\n    at async /Users/evananger/Developer/blazebite-functions/functions/node_modules/firebase-functions/lib/common/providers/https.js:458:26\n    at async runFunction (/Users/evananger/.nvm/versions/node/v16.13.1/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:506:9)\n    at async runHTTPS (/Users/evananger/.nvm/versions/node/v16.13.1/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:531:5)\n    at async /Users/evananger/.nvm/versions/node/v16.13.1/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:694:21 {\n  errorInfo: {\n    code: 'messaging/invalid-argument',\n    message: 'Invalid [apns-push-type] set for apns platform'\n  },\n  codePrefix: 'messaging'\n}"}

Relevant Code:

function sendOrderReady(token) {
  const date = new Date();
  return admin.messaging().send({
    token,
    apns: {
      headers: {
        'apns-push-type': 'liveactivity',
        'apns-priority': '10'
      },
      payload: {
        aps: {
          timestamp: date.getTime(),
          event: 'update',
          'content-state': {
            orderCompleteDate: date.toISOString(),
            orderReady: true
          }

        }
      }
    }
  })
}