App to App Travel enables users to move seamlessly from a destination in one app to a destination in another app. You can use App to App Travel in partnership with another Meta Quest app to send and receive users between destinations within those apps.
Prerequisites for App to App Travel
To enable App to App Travel, you will need:
Destinations created and enabled within the receiving app
The destination_api_name of the partner app to receive users when engaging App to App Travel.
The receiving developer will need to share the destination_api_name, found on the Developer Dashboard under Engagement > Destinations for their app by inputting the desired destination ID.
Many destinations require a deeplink_message as part of the launch. Coordinate with the receiving app’s developers to understand what they expect in the deeplink_message.
Implement App to App Travel
With the above prerequisite information, the sending and receiving apps are now ready for App to App Travel. The receiving app will use destination_api_name, deeplink_message, lobby_session_id, and match_session_id to enable users to be grouped together in a specific destination in the receiving app.
Note: Some apps may be using the legacy Rooms system, which is why the room_id is included. Rooms was deprecated in March 2023. For more information, see the Deprecating Oculus Rooms API in March 2023 blog post.
Note: The App to App Travel API does not work in PC/Link mode.
App to App Travel API
ovrApplicationOptionsHandle allows you to pass information to the receiving app when engaging in App to App Travel. Options are set using the following functions:
ovrApplicationOptionsHandle (created via ovr_ApplicationOptions_Create())
ovr_ApplicationOptions_SetDeeplinkMessage(handle, value):
type: const char*
comment: |
A message to be passed to a launched app.
ovr_ApplicationOptions_SetDestinationApiName(handle, value):
type: const char*
comment: |
If provided, the intended destination to be passed to the launched app
ovr_ApplicationOptions_SetLobbySessionId(handle, value):
type: const char*
comment: |
If provided, the intended lobby where the launched app should take the user. All users with the same lobby_session_id should end up grouped together in the launched app.
ovr_ApplicationOptions_SetMatchSessionId(handle, value):
type: const char*
comment: |
If provided, the intended instance of the destination that a user should be launched into.
ovr_ApplicationOptions_SetRoomId(handle, value):
type: ovrID
comment: |
[Deprecated] If provided, the intended room where the launched app should take the user (all users heading to the same place should have the same value). A room_id of 0 is INVALID.
The following is an example using the application options:
Work with the sending app to ensure that all of the fields are correctly configured.
You can check if your app is being launched using App to App Travel by calling ovr_ApplicationLifecycle_GetLaunchDetails(). To check if your app was launched via App to App Travel:
Call ovr_ApplicationLifecycle_GetLaunchDetails() to get the launch details handle.
The launch details handle contains information about how the app was launched.
Check if ovr_LaunchDetails_GetLaunchType() returns ovrLaunchType_Deeplink.
Call ovr_LaunchDetails_GetLaunchSource().
If your app was launched using the ovr_Application_LaunchOtherApp API you will see the launch source set to “OTHER_APP:XXXX” where XXXX is the AppId of the app which is sending this request.