How to Forward Push Notifications From Your Zulip Server to the iOS and Android Apps
Zulip is a top-notch, open source team chat application for real-time messaging and collaboration. It features a unique threaded conversation system to keep conversations organized and easy to follow, and is used by large open-source projects, organizations, and working groups. It offers a wide array of features including customizable notifications, file sharing, and emoji reactions.
The Mobile Push Notification Service API has a default rate limit of 1000 requests per minute, which is imposed to protect it against DoS attacks (unintentional or otherwise). As a consequence, it is not possible for an app published in the Apple and Google app stores to receive push notifications from multiple, mutually untrusted servers without forking and modifying the app to hardcode a unique key for each server.
To get around this restriction, you can deploy your own Zulip server and configure it to send push notifications to the iOS and Android apps using a unique, self-signed certificate that you generate on the server. This approach is very involved and involves spending hundreds of dollars on things like DUNS number registration and weeks jumping through the hoops that Apple requires to build and distribute a modified version of the Zulip mobile apps.
To reduce the complexity of this setup, we've created an open-source server-side tool that can be used to intercept and forward push notifications from your Zulip server to the iOS and Android apps. You can download it here. To use it, you'll need to be a server administrator on the Zulip server that you want to send push notifications from, and know the private key for that server.