ZeepNotti Docs

Testing Your Integration

There is no sandbox/dry-run mode - how to test a real send safely.

There is no dry-run mode

ZeepNotti has no test or dry_run flag on POST /v1/apps/{app_id}/notifications - every send attempts real delivery through FCM or APNs. If you're looking for a way to "simulate" a send without it reaching a device, it doesn't exist today. Testing means sending a real notification to a real, registered test device and checking the result.

The test loop

  1. Register a real device - install your app on a physical device or simulator/emulator with real push credentials, obtain a token from FCM/APNs, and call POST /v1/apps/{app_id}/devices with it using the Client key.
  2. Send - call POST /v1/apps/{app_id}/notifications targeting that Device's id (target_type: "device_ids").
  3. Check the outcome - GET /v1/apps/{app_id}/notifications/{id}/deliveries returns one Delivery per targeted Device, with its own sent / failed / pending status and last_error when something went wrong. Poll this rather than assuming the 201 from step 2 means the push actually arrived - that response only confirms the Notification was accepted, not delivered.

iOS: sandbox vs production builds

An App's APNs credentials carry one environment value - "sandbox" or "production" - set on POST /v1/apps/{app_id}/credentials/apns. ZeepNotti sends every push for that App through whichever gateway matches this one stored value; it does not inspect the token or infer environment per Device.

This means: a device token from a debug/Xcode-run build is only valid against Apple's sandbox gateway. If your App's environment is set to "production" (the default when omitted), sending to a debug-build device token fails with BadDeviceToken - not because the token is wrong, but because you're testing against the wrong gateway for that credential. Set environment: "sandbox" on the App you use for development/testing, and use a separate App (or credential set) with "production" for TestFlight/App Store builds.

Android/FCM

FCM has no separate sandbox concept - a device token from a debug build works against the same FCM endpoint as a release build, as long as the google-services.json/service account matches the app package used to build the client. There's no environment field to configure for FCM credentials.

What "it didn't arrive" usually means

If a Delivery shows sent but nothing appeared on the device, the issue is almost always device-side (OS notification permissions, Do Not Disturb, app not in foreground on some Android OEM skins that kill background delivery) - not something ZeepNotti' API surfaces. If the Delivery instead shows failed, see Troubleshooting for what the common last_error values mean.

On this page