Simulating remote push notifications
Currently, when I want to test a part of an app involving a remote notification, I only have one choice: using a real device and the Apple Push Notification service (APNs). To send a notification, we need an APNs device token, which is a globally unique token that identifies a device to APNs.
And this is painful for several reasons: we need entitlement, certificate (.p12) and to rely on APNs. You can’t test locally, we need Internet access.
I used to work with NWPusher or lola, small tools, to achieve that purpose.
And I still will use them, but now we have a better one.
Starting Xcode 11.4, it is now possible to simulate remote push notifications directly within the Simulator. All the pain points listed above are now gone as it happens locally.
The best way is to use the
simctl command-line tool, that provides the interface to use Simulator programmatically.
This is the device UUID on which we will send the notification.
You can either specify the UUID or
To find the UUID of your booted Simulator,
xcrun simctl list | egrep 'Booted'.
This is the
You can specify the bundle identifier as an argument.
This is the payload of the notification. Please see Creating the Remote Notification Payload for further documentation.
You can either specify the path of the file as the last argument or use
- for standard input.
Putting them together
We can also omit the bundle identifier by specifying it in the payload under the
Simulator Target Bundle key.
Last updated on 07th February 2020