Handling the Ride-Booking Intents

Understand how Siri and Maps generate ride-booking intents and learn tips about how to handle those intents.


A successful implementation of a ride-booking Intents app extension requires supporting all of the intents in the ride-booking domain. In fact, Maps on iOS expects your extension to handle all of the intents and doesn’t load it if it doesn’t.

A ride-booking Intents app extension must be able to provide a list of available vehicles, details about the cost of each ride, and status updates for any booked rides. It must also facilitate financial transactions associated with any rides and communicate any relevant information to your ride booking service.

Understanding the Ride-Booking Process

Siri and Maps handle ride booking differently, and your extension must be able to support both flows. With Siri, users request a ride verbally, and expects your Intents app extension to fill in any required details that the user doesn’t provide. With Maps, users specify information such as the start and end points of their route directly using the Maps interface. Siri and Maps deliver different intents to your extension and call different methods due to these differences.

In Siri, the ride-booking flow is as follows:

  1. The user asks Siri to book a ride.

  2. Siri sends an INRequestRideIntent object to your Intents app extension.

    1. Siri asks your extension to resolve the intent parameters, prompting the user as needed to provide additional information.

    2. Siri asks your extension to confirm the intent.

    3. Upon successful confirmation, Siri asks you to book the ride.

In Maps, the ride-booking flow is as follows:

  1. The user enters a destination on the map.

  2. The user taps the Directions button to view the route, and optionally changes the starting point or destination.

  3. The user selects Ride from the list of transportation options. (If there’s an installed Intents app extension supporting ride booking but it’s not enabled, Maps prompts the user to enable it. Maps also displays a list of App store apps that support ride booking).

  4. Maps sends an INListRideOptionsIntent object to your Intents app extension. (Maps only asks you to handle the intent. You don’t have to resolve parameters or confirm the intent. On success, your response should include the appropriate ride options to display to the user).

  5. Maps displays your ride options to the user.

  6. When the user selects one of your rides, Maps sends an INRequestRideIntent object to your Intents app extension.

    1. Maps may ask your extension to confirm the intent.

    2. Upon successful confirmation, Maps asks your extension to book the ride.

When the user asks for the status of a ride using Siri, Siri sends a single INGetRideStatusIntent object to your Intents app extension. Maps may send this same intent to your Intents app extension multiple times after booking is complete. Maps may also call the startSendingUpdates(for:to:) method of your intent handler to ask for live status updates. Prepare your handler to push frequent status updates to the specified observer object. For information about how to handle live status updates, see Providing Live Status Updates.


Related Articles

Generating a List of Ride Options

Generate ride options for Maps to display to the user.

Providing Live Status Updates

Provide regular updates to Maps about the status of a booked ride.

See Also

First Steps

Booking Rides with SiriKit

Add Intents extensions to your app to handle requests to book rides using Siri and Maps.