Description
Enhancement Request
Use Case:
An application developer, in a situation where more than one App Directory exists and the names of applications are not unique, needs more information about applications returned from findIntent()
or findIntentsByContext()
to successfully raise an intent to a specified target
. We recommend bringing in fields from the AppD application definition that differentiate different apps with the same name:
appId
: the fully qualified appID differentiates based on version and the appDirectory and hence should be globally uniqueversion
: the value that differentiates different copies of an app within a single app directory
Workflow Description
- Application calls
findIntent()
orfindIntentsByContext()
- Application receives a response containing a list of AppIntent objects, themselves containing an AppMetadata object for each application that details are being returned on.
- AppMetadata objects contain values that can uniquely identify each app (given that multiple AppD's may be in use, each of which could contain multi[le versions of an application with a single
name
value).
Workflow Examples
- User clicks on a contact
- UI displays the available applications.
- There are multiple applications available with the name "Messenger"
- The user selects any "Messenger" from the UI
- Instead of passing a
name
value, the application passes an AppMetadata object containing anappId
value orname
andversion
, uniquely identifying the app - Desired app version is launched.
Additional Information
Note the following definitions in the AppD specification for an application record:
name
: The name of the application. The name should be unique within an FDC3 App Directory instance. The exception to the uniqueness constraint is that an App Directory can hold definitions for multiple versions of the same app. The same appName could occur in other directories. We are not currently specifying app name conventions in the document.
version
: Version of the application. This allows multiple app versions to be defined using the same app name. This can be a triplet but can also include things like 1.2.5 (BETA)
Integrating additional properties defined in the App D specification provides an additional way for applications to determine and specify intent targets. The argument for returning the entire AppMetadata object from findIntents()
& findIntentsByContext()
and others is based upon deference to the application. If an application receives a list of available apps, there is currently no identifier other than the name
property. This inability to properly identify other applications by one or more properties breaks down when:
- there are multiple app directories
- there are multiple versions of an app within the app directory
Proposed Additions
Current AppMetadata
interface:
interface AppMetadata {
name: string;
title?: string;
tooltip?: string;
description?: string;
icons?: Array<string>;
images?: Array<string>;
}
New interface:
interface AppMetadata {
name: string;
appId?: string;
version?: string;
title?: string;
tooltip?: string;
description?: string;
icons?: Array<string>;
images?: Array<string>;
}