IMPORTANT: PLEASE READ THE ENTIRE ASSIGNMENT BEFORE APPLYING
We have a web/mobile application that currently uses GCM and that needs transition to Firebase.
The application is coded in PHP and MySQL, and uses Nodejs. The mobile app is built using Ionic, and has plugins written in Java (for Android) and Objective C / Swift (for iOS).
This is how things work in the application
1. The application is a group messaging application. People create groups and post messages to their groups. The groups might have hundreds to hundreds of thousands of members.
2. When a message is sent to a group with, say, 100,000 members, a PHP script makes 100,000 entries in a MySQL table called messages. Then it fires 10,000 push notifications (NodeJs is used).
3. GCM responds with 100,000 notification IDs, and the corresponding 100,000 records in the MySQL table above called messages need to be updated with these 100,000 notification IDs.
4. As and when a push notification is delivered, GCM responds with a delivery receipt, and the corresponding record in the MySQL table above called messages needs to be updated with the receipt. Thus, all 100,000 records will eventually need to be updated a second time with the delivery receipt, too.
Since large numbers of updates on MySQL will hamper performance, we need a solution there, too.
The broad scope of the work to be done
We need help with transitioning two apps - our own and that of a coaching institute which uses our backend for push notifications - to Firebase from GCM. The broad scope is below:
1. Work needs to be done on both the apps mentioned above
2. For all new downloads, we need to keep track of the latest registration tokens / device tokens in real time
3. For all existing downloads, we need to get the latest registration tokens / device tokens, and keep track of them thereafter in real time
4. We need a script to get the current registration token / device token for every user whenever we run it, and update it in the database for that user
5. We need to change the code of the application to have push notifications working in Firebase now instead of in GCM earlier
a. Firing push notifications
b. Getting notification ids and updating them in our database
c. updating our database when the delivery receipt comes, or any status report of the notification comes
6. Database needs to be updated in real time whenever a user uninstalls the app
7. Database needs to always have details of users who have not enabled / who have disabled push notifications, in real time (including on MI/LeEco phones and others like that)
8. Instance IDs should always be stored in our database for all app installs (we do not currently store Instance IDs).
We need the time frame for all the above, and what you would charge. (Also, it is possible that as you work some unexpected issues might crop up as in all such assignments, and, if you choose to take up the assignment, we would request that you be prepared for such things in the same price.)