Testing Push Notifications

Once you’re all set up with push notifications, you can use the CLI to test how these notifications will look for your devices.

Pre-requirements :

  • Your app has push notifications configured for at least one provider in your app settings

  • You have a user that has at least one device associated

  • To skip sending to devices but only to see the payload, pass skip_devices=true

The base command for testing push notifications is:

App.checkPush()
  .messageId(message.getId())
  .skipDevices(true)
  .userId(userId)
  .request();

This command provides the following functionality for you:

  1. Picks a random message from a channel that this user is part of

  2. Uses the notification templates configured for your push provider to render the payload using this message

  3. Sends this payload to all of the user’s devices

This particular use case is ideal for testing a newly configured app, to make sure the push notifications are configured exactly as desired.

In some cases, you might want to test the new notification template that you configured on the dashboard.

For example, let’s say you want to test a new APN notification template:

App.checkPush()
  .messageId(message.getId())
  .skipDevices(true)
  .userId(userId)
  .apnTemplate("{\"aps\":{\"alert\":{\"title\":\"{{ sender.name }} @ {{ channel.name }}\",\"body\":\"testing out new stuff:{{ message.text }}\"},\"category\":\"NEW_MESSAGE_2\"}}")
  .request();

As you can see below, the new template will be used for sending the push notification only this time. The existing clients will leverage the default configuration.

undefined

Here’s a full list of parameters that you can use with the test command:

Push Test Parameters

nametypedescriptiondefaultoptional
user_idstringThe user ID-
message_idstringID of the message that should be used instead of a random one. If the message doesn’t exist, an error will occur-
apn_notification_templatestringNotification template to be used instead of the configured APN one. This is one time only. (v1 only)-
firebase_notification_templatestringNotification template to be used instead of the configured APN one. This is one time only. (v1 only)-
firebase_data_templatestringData template to be used instead of the configured Firebase one. This is one time only. (v1 only)-
skip_devicesbooleanSkip requiring device tokens and sending.False

Push Test Payload

nametypedescriptiondefaultoptional
device_errorsobjectA map of errors indexed by device tokens.-
general_errorsarray of stringsA list of errors encountered with providers.-
skip_devicesbooleanGiven skip_devices flag is passed back.-
rendered_apn_templatestringYour executed APN template (v1 only).-
rendered_firebase_templatestringYour executed Firebase template (v1 only).-
rendered_messagestringYour payload (v2 for all providers and v1 for Huawei/Xiaomi)-
© Getstream.io, Inc. All Rights Reserved.