Features Of Taxi Booking App
- Ability to accept and reject the booking requests.
- Divers receive passenger info after accepting the request.
- Route navigation to pick up location.
- Waiting time calculation and charges
- Route navigation from Pick up to drop off location.
- Ability to end the ride manually before drop off location reached on Passenger request.
- The App ends the ride automatically once the drop point reached.
- Ability to adjust the total fare after the completion of the ride.
- Driver can see future booking schedule
- Notification to the passenger when the driver arrives at picks up location.
- Payment through Credit card, PayPal, and Cash.
- Passenger gets an invoice through email and on the app after the payment with travel details.
- Passenger can rate driver and provide comments.
- The passenger can book future ride as well.
- The passenger can view details to past rides.
- The passenger can view details of future bookings.
- Booking cancellation.
- Easy registration including social authorization and OTP.
- Live location suggestions when setting pickup and drop off points.
- Favorite Address for easy future bookings.
- GPS is available to locate passenger’s current position.
- Estimated fare calculation based on distance and time.
- Driver’s info shared with Passenger once request accepted by the driver.
- The App ends ride automatically once the drop point reached.
- Live-tracking when the driver approaches the pickup location.
- Creation of driver account.
- Admin can save driver legal documents.
- Tracking of all booking requests accepted and rejected.
- Track all confirmed bookings & all completed rides.
- Track all Cancellations and fare summary.
- Ability to set the base fare dynamically.
- View all drivers ratings and review.
- Ability to set/change the content of all email and notification sent to the system.
Challenges & Solutions
To ensure device compatibility, we take and list down all devices that the client expects the app to be compatible with. Following which, we make sure the app is well tested on all the given devices. There also comes up a challenge where our team takes a ride in different vehicles, speed and areas and test the app.
We used GPS and Google Map to find the accurate distance. The distance is recorded by latitude and longitude. We do this programmatically to calculate the distance between the said start points to the destination via a given point with a 90-degree turn by dividing the distance into two sections. Starting point to crossing point and then from crossing midpoint to the destination. This gives us an accurate distance between two given points.
Besides ensuring device compatibility we make sure the app has a great design with intuitive user experience, be responsive and has a clear presentation using icons to guide the users. Our designs are initiated by understanding the context of their user. It is responsive: neither too heavy nor slow nor too tappy. Defining a correct balance of speed. In case if it is required to be slow at some point, it is clearly and accurately communicated via progress bar until the time of completion. Design Elements: reception buttons, proper segment control, controls offering a wide array of functionality, Navigation bars, temporary views as and where required and content views.
We tracked the driver location and display it on passenger app using TCP connection between the server and mobile devices. We handled it programmatically that on every periodically fixed distance OR when driver position (lat/long) doesn’t change for few seconds, drivers app send the location update to server and server transfer it to passenger app. We handled the vehicle movement on the map very smooth where the passenger can actually see continues movement of the vehicle.
Managing push notifications from the server. The requirement was to deliver the ride request to the driver through notification, therefore, we need to make sure that in every case notifications goes to the driver without any delay and develop a mechanism to handle case whenever there is a delay in notification.
We set a timeframe and server sends the request for the ride to another driver if it didn’t get any response from a driver within a set timeframe. This timeframe is dynamic and can be changed from web admin panel. At the time when a driver accepts the request, we update the ride status in Server at the very moment so in a rare scenario if another drives also accept the same request the gets the handled message of the ride has already been accepted by another driver.
Taxi booking process diagram
- PayPal Payment SDK
- Database SQLite
- Crittercism for Crash Reporting
- Facebook SDK for authorization
- Google Maps for Map and Location
- CoreData for data storage
- Afnetworking for managing request to server
- Side Menu UI component