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
- 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}/deviceswith it using the Client key. - Send - call
POST /v1/apps/{app_id}/notificationstargeting that Device'sid(target_type: "device_ids"). - Check the outcome -
GET /v1/apps/{app_id}/notifications/{id}/deliveriesreturns one Delivery per targeted Device, with its ownsent/failed/pendingstatus andlast_errorwhen something went wrong. Poll this rather than assuming the201from 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.