Why is my device not receiving push notifications on iOS?

Several issues may prevent your device or the device of someone in your team from receiving notifications on iOS.

If you are not receiving any of the notifications sent from Batch, here are some suggestions to help diagnose the issue.

Keep in mind that problems can occur at various levels:

  1. At your campaign level

  2. At the integration level

  3. At the device level

Diagram illustrating the push notification delivery flow. It shows a 'Batch' sending tokens to a 'Push Service' (like APNS/FCM), which then attempts to deliver a 'Notification' to a device. A box highlights 'Possible Delivery Issues' including network problems, battery saver killing the app, iOS system behavior (refusing silent pushes or app in foreground), and integration issues or bugs. A dashed line indicates feedback on token validity is sent from the Push Service back to the Batch.

1. Send a test notification

Try sending a test notification to your device using the debug tool.

You may notice different issues from the profile or debug tool:

a) I cannot find my install

The image shows Batch's dashboard, specifically the "Profiles" section. A search for profile ID "288B39C6-6F68-4B47-BB57-6E5DEAA8063F by Installation ID" resulted in "No matching profile found: please check the identifier and try again." An icon of a person with a magnifying glass and question marks visually represents the search failure.

Make sure you have opened the app once and the version you installed includes Batch's SDK.

b) No token found

The token field is empty. Make sure the installation date you see in the debug tool makes sense, and check if notifications are turned on for the app you are testing. Go to iOS settings → "Your app name" → Notifications to ensure notifications are enabled for your app.

You will need to restart your app after enabling push notifications.

A smartphone screen displays Batch Store app "Notifications" settings, with "Allow Notifications" toggled on.

c) "BadDeviceToken" error

BadDeviceToken errors can occur for two reasons:

  • Invalid token: The token you are targeting is not valid anymore, probably because you have recently reinstalled the app.

  • Wrong environment: If your device token is valid, ensure you have configured the right environment (sandbox/production) for your project (Settings → Channels → Push → Push Configuration → APNS).

d) "DeviceTokenNotForTopic" error

This error indicates that your app's Bundle ID and your .p12 certificate's Bundle ID do not match.

You will need to generate a new .p12 certificate or, in case you are using a .p8 file, double-check the appID/bundleID you are using on Batch's dashboard (Settings → Channels → Push → Push configuration → APNS).

2. Network issues

Connect your device to a mobile network or try disconnecting and reconnecting your Wi-Fi.

3. Campaign Targeting

If notifications are enabled and your device can receive test push notifications, double-check the targeting of your campaign:

 Screenshot of a "Targeting" interface with options for filtering by country, language, and segmentation. The "blocked_account" segmentation is set to "Yes", and the estimated reach is "1 profile".

Ensure it matches the information you see from the profile view (Profiles → Search profiles).

In case you are using Batch's Transactional API with raw tokens, ensure you are targeting the right environment (e.g., {"sandbox": true}).

4. Campaign Scheduling

See if you scheduled your campaign based on Local time or Global time (UTC).

Screenshot of a "Campaigns" dashboard displaying a list of campaigns. Each campaign entry includes its "Name", "When" (time), "Delivery" metrics, and "Interaction" statistics. A red arrow highlights the "UTC" label next to some entries in the "When" column, signifying that those specific times are in Coordinated Universal Time. For other entries in the "When" column where "UTC" is not present, the times are displayed in the local timezone.
  • The Local Time option allows you to send a push notification that will be received at the same hour in every country, according to the user's respective local timezone. For example, if your push campaign is scheduled to be sent on Friday, July 19th at 6 PM, your Canadian, Italian, and Chinese users will each receive it on Friday, July 19th when it is 6 PM in their respective local timezones.

  • The Global Time (UTC) option allows you to send a push notification to your users at a specific UTC time regardless of their location. If your push campaign is scheduled to be sent on Friday, July 19th at 6 PM global time (UTC), your users will receive it:

    • At 2 PM in Canada (UTC -4)

    • At 8 PM in Italy (UTC +2)

    • At 2 AM on July 20th in China (UTC +8)

Last updated

Was this helpful?