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:
At your campaign level
At the integration level
At the device level

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

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.

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:

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

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?