Pushy is a highly-reliable push notification gateway, perfect for time-sensitive, mission-critical applications.
Give us a call at +1 415 906 5305 for sales and technical support, available Monday to Friday from 9AM to 5PM UTC-4
Check out our developer-friendly documentation for detailed steps on how to integrate Pushy within your app
Frequently Asked Questions
What is Pushy?
Is there a free trial?
How does Pushy work?
Our SDK assigns a unique device token to each user that installs your app or visits your website and registers for push notifications. This token can be used to send push notifications to the device and should be stored in your backend database, along with other information about the user.
To send push notifications to devices, your backend server simply needs to send a web request to our Send Notifications API with the device token(s) and push payload. Your app can then display a system notification or execute other app-specific logic to handle the notification.
Does Pushy work in China?
Absolutely! Since Google Cloud Messaging and Firebase Cloud Messaging are blocked in China, and because most Android phones sold in China lack the Google Play Services framework, lots of apps utilize Pushy to deliver notifications reliably to devices in China.
Note: Web Push for Google Chrome is blocked in China.
What is MQTT and what are its benefits?
MQTT is an extremely lightweight, battery-friendly messaging protocol we utilize at Pushy to deliver push notifications to Android devices. It allows us to preserve precious device resources such as network bandwidth and battery power as we maintain a background connection with every device that installs your application.
How is Pushy different from GCM / FCM?
Pushy is a reliable Google Cloud Messaging / Firebase Cloud Messaging alternative since it is not plagued by the reliability issues developers face with production GCM / FCM deployments, such as registration failures (due to the infamous
SERVICE_NOT_AVAILABLEexception), unexpected delays (due to unrealistic heartbeat intervals), message throttling, and overall unreliable service.
Read more about GCM / FCM reliability issues here.
Are there any limits on push notification payload size?
Yes, each push notification is limited to
4kbof stringified JSON payload data.
Need to send more than 4 kilobytes? Contact us.
Do you persist notifications in case devices are offline?
Absolutely, we persist notifications for offline devices which are delivered as soon as they reconnect, in the order in which they were sent.
This behavior can be configured on a per-notification basis using the
time_to_liveparameter in the Send Notifications API.
How can I send notifications to devices in Doze mode?
On devices running Android 6.0+, Doze mode terminates all background connections when the phone is idle and not being charged, including the background connection to our servers.
As soon as the device is moved or awoken by the user, background connections are restored and any pending notifications will be delivered within seconds, providing they have not expired yet.
To send notifications to devices in Doze mode, you should ask your users to disable battery optimization for your app by displaying an in-app dialog with instructions and firing the
This will effectively keep the background connection to our servers active and devices will be able to receive notifications even in Doze mode.
How do you identify devices uniquely across reinstalls?
On Android, our SDK persists device tokens in both your app's
SharedPreferences(which are cleared when your app is uninstalled) and in the device's external storage (which is persisted between app reinstalls) depending on whether your app has been granted the
On iOS, our SDK persists device tokens in both your app's
UserDefaults(which are cleared when your app is uninstalled) and in the iOS Keychain (which is persisted between app reinstalls).
For Web Push, our SDK persists device tokens in the
HTML5 Local Storage(which can be cleared by the user manually).
The next time your app is reinstalled on the same device, or if the same device visits your website, our SDK will attempt to determine its previous device token, instead of generating a new one and charging you twice for the same device.
What permissions does the Pushy SDK for Android require?
The following permissions are required by our SDK:
android.permission.INTERNET android.permission.WAKE_LOCK android.permission.ACCESS_NETWORK_STATE android.permission.RECEIVE_BOOT_COMPLETED android.permission.WRITE_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGEpermission is optional but highly recommended. It is only necessary for persisting device tokens in the external storage so that our SDK can keep track of each device's unique token for when your app is reinstalled on that same device. If this permission is not requested by your app, our SDK will persist the device token only within the
SharedPreferenceswhich are cleared when your app is uninstalled. If this permission is not granted to your app, it may lead to duplicate billing for the same device, as we cannot keep track of its previously-assigned device token without this permission.
Does Pushy depend on Google Play Services on Android?
No, the Pushy SDK for Android works on any Android 2.1+ device with Internet connectivity.
Lots of apps utilize Pushy to add push notification support for Amazon Kindle, CyanogenMod, and other AOSP devices that lack the Google Play Services framework.
What firewall rules are needed for devices to connect to Pushy?
Currently, Pushy requires the following outgoing firewall rules to be configured on the client-side:
Note: Please notice the
*character which indicates a wildcard subdomain whitelist, and the two separate domains
pushy.io. If your organization has strict firewall requirements or cannot perform a wildcard subdomain whitelist, please contact us for an alternative solution.
If my Android app already uses GCM or FCM, how easy is it to migrate?
What is the minimum Android SDK version supported by the Pushy SDK?
Currently, our SDK supports
minSdkVersion 7(Android 2.1+).
Are there any limits on the number of requests that can be sent to your API?
Yes, we currently limit the number of requests to
800per minute (about
13per second). This limit can be increased according to the number of active devices in your account.
Need more? Contact us.
Why are my notifications being delayed when my app is in the background?
The Pushy SDK for Android definitely supports background push notification delivery, and our founding principle is and always will be to provide highly-reliable notification delivery for your app.
However, due to external factors out of our control, some of your users may experience delayed notification delivery due to:
Please also consider these consumer-dependent factors:
- The user may have uninstalled your app
- The device is low on battery or powered off
- The device is in Android power-saving mode
- The device may be disconnected from the Internet
- The user may have Force Closed your app in the Android settings
If you're still receiving delayed notifications after reviewing these common causes, please contact us and we'd be happy to investigate further.
Chinese power-saving restrictions
Some Chinese Android manufacturers make use of custom power-saving restrictions that inhibit sending push notifications to your users while your app is in the background. These power-saving restrictions also apply to Firebase Cloud Messaging.
Most notably, Chinese market devices from the following manufacturers include custom power-saving restrictions:
In order to receive notifications in the background on these devices, you will need to ask your users to whitelist your app from the respective manufacturer's power saving mechanism, within the device settings. The steps for achieving this are different for each manufacturer.
Do you store the push notification payload on your servers?
Yes. Only after all devices acknowledge that they received a push notification do we delete it, unless its
time_to_liveexpires before that.
If you have data privacy concerns, you can avoid sending the sensitive data through us, and instead, either send a unique database identifier (so your app can fetch the sensitive data from your servers using this identifier) or simply send an empty push notification to wake your app so it can fetch updates from your own servers instead.
You can also choose to encrypt the push notification payload on your servers and decrypt it within your app, using
Can I self-host Pushy on my own infrastructure?
Absolutely! Contact us to discuss this type of deployment.
What is your technology stack?
How does billing work?
Once you set up a payment method, we'll automatically charge your credit card on the first of every month. The amount charged will be based on the number of active devices in your account during the previous month. The invoice is automatically made available for download in the dashboard.
Credit card information is stored and processed securely by Stripe.
Is Pushy scalable?
Absolutely, we automatically scale our backend infrastructure to support your growing user base.
If you anticipate a sudden burst of traffic to your app, please let us know in advance, so we can provision the necessary compute capacity ahead of time. This will enable us to support the sudden burst of traffic seamlessly.
Still haven't found what you're looking for?