This is an example for a Crossplatform Push-Notification setup that works for both Android and iOS.
The example comprises of a server application written in node.js that uses the node-pushnotifications library and a React Native app that demonstrates the usage of the react-native-push-notification library and the react-native-fcm library.
It includes an example Firebase application setup that works out of the box.
In order to use your own Firebase application, replace the google-services.json
in the app/android
directory, respectively the GoogleService-Info.plist
in the app/ios
directory with your own (downloadable in the Firebase Console).
- Recommended: Docker
- Optional (if you don't want to use Docker):
- Android or iOS development setup (e.g. Android Studio)
- Optional: Install yarn (
npm install yarn -g
) - Run
npm install
oryarn
- Run
docker-compose up
- Alternatively:
- Start MongoDB
mongod --dbpath=<yourDbPath>
- Start server
npm run server
- Start MongoDB
- Start React Native app packager
npm run app-pkg
- Connect a device or start a simulator
- Run Android app
npm run android
- Run iOS app
npm run ios
After application startup you should see a screen which displays your device token and the information that no notification has been received yet.
The device token should have been sent to the node.js server and stored in the MongoDB.
In order to send a sample push notification to all known device tokens execute curl http://localhost:3000/push
or open http://localhost:3000/push in your local browser.
The application should now display Last notification title: Crossplatform push is working.
If you choose to run the backend locally without Docker, you can configure two parameters via environment variables:
- DB_HOST: MongoDB host string
- SERVER_PORT: HTTP port of the server application
The app uses the react-native-config library to configure its environment.
You can edit the app/.env file in order to configure the following:
- PUSH_LIB: Determines which library will be used. Possible values:
- fcm: Use react-native-fcm
- rn-push (actually anything else as well): Use react-native-push-notification
- SERVER_URL: Base URL of the server application
- Usage of
react-native-push-notification
for iOS currently not functional. Help appreciated.