Create React-Native app to access SMS/MMS on iOS and Android

Job ID: 39117658

Budget: £10 – £15 GBP

The goal of this project is to create an app that can communicate with our back end server via a simple REST API for the purposes of receiving and sending text messages via the text messaging service on an iOS or Android mobile device.

We require a React-Native app that runs on iOS and Android to:

1) Send all incoming SMS/MMS messages received by the device to a webhook using POST.
2) Poll a web URL using GET for messages and send any available as an SMS/MMS message.

- The single URL for the two communication channels will be hardcoded in the app.
- For testing purposes the hardcoded URL can identify a text file on any web server.
- Both communication channels must support HTTP (for testing) or HTTPS (for live security) URLs.
- Use GET to check for messages waiting to be sent and POST for messages received.
- Individual messages will be transferred in MIME format.
- There must be a way to set and update a username and password which will be stored by the app and provided with each request via a standard Authorization header, and the username should be displayed in the UI.
- The app UI will contain a scrolling view (like a log) to show information about each incoming and outgoing message (show date/time, direction, phone number, and a truncated message). This log should truncate at 200 messages to avoid growing over time.
- For sending messages the app will do whatever it needs if the message needs massaging, for example if the message is too long to be sent as a single SMS it'll break it up as needed so that it is received on the other end appropriately.
- If there is an error response from our server (such as 401 or 404) the HTTP response body is displayed to the end user as an error message (replacing the log view) and the app no longer polls until the user clicks a button.
- For MMS the media is provided from/to the server as standard multi-part MIME attachments. Testing will include image, video and PDF attachments but the implementation should not limit the supported types.
- The app must used shared code as much as possible so we don't have to support two implementations for iOS and Android.
- The app should have as little reliance on third party libraries as possible.
- The app must continue to function even while it is not the "active" app on the device (i.e. it is in the background and a different app is showing).
- The app must be written such that it satisfies the requirements to be deployed in the iOS and Android app stores.

We are looking for someone who has created a similar app in the past and can quickly and efficiently provide this solution. We will not work with someone who has not done this in the past.

Proposed Milestones:

1) A React Native app that compiles on OSX for iOS and can also be compiled on OSX for Android. When there is an incoming SMS the app logs the recipient information and message body to the app UI. Include instructions for building the app for both target platforms.
2) Add the ability to set and update a username and password and save them, and the username should be displayed. The app polls a hardcoded URL for messages, providing the username and password. Any messages returned are logged to the app UI similarly to the above.
3) The app sends incoming SMS to the server and outgoing messages from the server are sent as SMS (and also added to the log).
4) The app can receive and send MMS and the app continues to process incoming messages while it is not the "active" app.
5) Fixes for bugs found during final testing.
6) Fixes for issues identified when submitting the app to the two app stores.

NOTE: In order to handle outgoing SMS messages while the app is in the background we may need a push mechanism from our server. This is outside the scope of this job, but we do need this job to handle the scenario of an incoming SMS "waking" the app as needed.
Related categories: PHP Website Design MySQL HTML Web Hosting