PushMesh
Sign in Create account
Open section navigation

Index

APNs credentials (iOS)

How to create the APNs .p8 key at Apple, gather Key ID, Team ID and Bundle ID, and add them to PushMesh, with screenshots — what iOS needs for push to go out.

APNs credentials (iOS)

On iOS, the thing that delivers the notification is APNs (Apple Push Notification service). For PushMesh to send on behalf of your app, it needs the .p8 key (token-based auth) and three identifiers: Key ID, Team ID, and Bundle ID. Without them the send returns 200 but iOS never receives.

Two sides: create at Apple and paste into PushMesh.


1. Create the .p8 key at Apple

At developer.apple.com go to Certificates, IDs & Profiles › Keys and click +. Name it, check Apple Push Notifications service (APNs), then click Continue and Register.

Register a New Key with APNs checked

2. Download the .p8 and note the Key ID

In the Keys list, the key shows its Key ID (10 characters) and a download icon — download the .p8 file. Note the Sandbox & Production environment: a single key serves both worlds.

Keys list with the Key ID, download and environment

The .p8 can be downloaded only once. If you lose it, generate a new key.

You need two more values:

  • Team ID — 10 characters, under Apple Developer › Membership, next to the account name.
  • Bundle ID — the app identifier in reverse-dns (e.g. io.pushmesh.expolab), under Identifiers or in Xcode’s Signing & Capabilities.

3. Paste into PushMesh and choose the environment

At https://app.pushmesh.io, open the app and go to the APNs (iOS) section. Enter Key ID, Team ID, and Bundle ID, upload the .p8 file (or paste its contents) and click Save credential.

Choose the Environment:

  • Sandbox — app run straight from Xcode.
  • Production — App Store and TestFlight (TestFlight is production — the most common mistake).

The same key serves both; switching the environment takes effect immediately. Click Test connection — green confirms Apple accepted the key.

APNs section in the PushMesh panel, with key_id, team_id and environment


FAQ

Test connection passed, but iOS doesn’t receive. It is almost always the environment: a TestFlight build is production, not sandbox. Adjust it in the APNs section; the key stays the same.

I lost the .p8. You cannot download it again. Generate a new key (step 1) and use Replace credential.

One key for several apps? Yes — the key belongs to your Apple account. What changes per app is the Bundle ID.

What about Android? Android uses FCM, not APNs. See Firebase credentials (Android).