Skip to main content
All CollectionsPush NotificationsiOS
Why is my device not receiving push notifications on iOS?
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.

Baptiste avatar
Written by Baptiste
Updated over a week ago

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

Keep in mind the issue may happen:

  1. At your campaign level

  2. At the integration level

  3. At the device level

1. Send a test notification

Try to send a test notification to your device from the debug tool:

You may notice different issues from the debug tool:

a) I cannot find my install

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 install 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.

c) App opened in the foreground

If you find a recent install with a push token in the debug tool, make sure your app is not opened in the foreground during your tests. By default, iOS only displays notifications for apps opened in the background.

🚧 Note: If you need to be able to display notifications in the foreground, follow the steps described in that article

d) "BadDeviceToken" error

BadDeviceToken errors can happen for two reasons:

  • Invalid token: The token you are targeting is not valid anymore, probably because you have recently reinstalled the app. You will need to update it from the debug tool by clicking the "save as a test device" button.

  • Wrong environment: If your device token is valid, ensure you have chosen the right environment (sandbox/production) from Batch settings for your saved token (Settings → Push settings).

e) "DeviceTokenNotForTopic" error

Your app's bundle ID and .p12 certificate's bundle ID don't 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 → Push Settings).

2. Network issues

Connect your device to a 3G/4G network or try to disconnect/reconnect to your WiFi network.

3. Campaign Targeting

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

Ensure it matches the information you see from the debug tool (Dashboard Settings → Debug).

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):

The Local Time option lets you send a push notification that will be received at the same hour in every country. 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 receive it on Friday, July 19th when it's 6 PM in their country. 

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)


This article belongs to Batch's FAQ. Need more help? Find insightful articles, documentation, case & market studies, guides, and even more in our website's Resources section on batch.com and our blog.

Did this answer your question?