Pour de nombreux intents, la meilleure réponse d'une application est une réponse intégrée rapide ou une simple confirmation qu'une action a été effectuée. Vous pouvez remplir ces intents avec un segment d'application Android plutôt qu'un lien profond pour fournir à un utilisateur des informations directement dans l'Assistant Google.

GET_INVOICE
Google affiche automatiquement le nom de l'application et le logo de la fiche Play Store dans l'en-tête du segment d'application, ainsi que le bouton Ouvrir l'application en pied de page. L'utilisateur peut cliquer sur un segment d'application pour suivre un lien profond dans l'application si une interaction supplémentaire ou d'autres informations sont nécessaires.
Par exemple, à l'aide de l'intent intégré actions.intent.GET_INVOICE
, votre application bancaire peut implémenter un segment d'application personnalisé affiché par l'Assistant lorsque l'utilisateur prononce la phrase d'appel Vérifier mes prochaines factures. Dans le segment d'application, vous pouvez afficher en temps réel les données de la facture de l'utilisateur.
Les segments d'application Android fonctionnent mieux lorsqu'un utilisateur demande une information courte pouvant être affichée en une ou deux lignes de texte. Utilisez plutôt les liens profonds lorsque l'utilisateur souhaite effectuer une tâche dans votre application ou démarrer une tâche nécessitant une interaction plus poussée.
L'intégration des segments d'application est également disponible pour les intents personnalisés.
Implémenter des segments d'application
Vous pouvez implémenter des segments d'application avec les fonctionnalités actions.xml
ou shortcuts.xml
.
Sélectionnez l'un des boutons suivants pour choisir la méthode d'implémentation à utiliser.
Pour intégrer des actions dans les applications à vos segments d'application, procédez comme suit :
- Pour implémenter un segment d'application Android, suivez la procédure décrite dans le guide de démarrage des segments d'application.
- Dans le fichier
shortcuts.xml
, ajoutez un élément<slice>
à votre élément "capability". Dans l'élément<slice>
, ajoutez les balises<url-template>
et<parameter>
pour l'élément "capability".
Lorsqu'un segment d'application est utilisé dans le traitement, url-template
fait référence à l'URI du segment d'application, comme décrit dans le SliceProvider
.
Le url-template
doit être de type content://{slice_authority}/...
, où slice_authority
est l'autorité définie dans le fichier AndroidManifest.xml
.
L'aperçu suivant montre comment spécifier un segment d'application en tant que traitement de l'intent intégré CREATE_TAXI_RESERVATION
dans votre fichier shortcuts.xml
:
<!-- shortcuts.xml -->
<capability android:name="actions.intent.CREATE_TAXI_RESERVATION">
<slice>
<url-template
android:name="content://com.example/get_ride{?pickup,dropoff}" />
<parameter
android:name="taxiReservation.pickupLocation.name"
android:key="pickup" />
<parameter
android:name="taxiReservation.dropoffLocation.name"
android:key="dropoff" />
</slice>
</capability>
Pour une capacité donnée, vous pouvez spécifier plusieurs blocs <slice>
ou utiliser une combinaison de blocs <slice>
et <intent>
pour le traitement. Cette approche vous permet de proposer une expérience personnalisée en fonction de différentes combinaisons de paramètres spécifiées par l'utilisateur.
Par exemple, si l'utilisateur ne spécifie pas de lieu de dépôt dans sa requête, vous pouvez le rediriger vers l'activité de votre application qui présente les options permettant de définir les lieux de retrait et de dépôt. Pour en savoir plus sur l'ajout d'intents de remplacement, consultez la section Créer shortcuts.xml
.
Notez que, comme pour plusieurs blocs <intent>
, plusieurs blocs <slice>
ou une combinaison de blocs <slice>
et <intent>
sont exécutés dans l'ordre dans lequel ils sont déclarés. Seul le premier bloc correspondant à toutes les exigences d'une requête utilisateur donnée s'exécute.
Autorisations liées aux segments d'application
Vous devez autoriser le segment d'application à accéder à l'Assistant Google au démarrage.
Les autorisations du segment d'application sont hiérarchiques. L'Assistant obtient donc l'autorisation pour tous les URI de segment d'application tant que vous lui accordez une autorisation sur un URI de niveau supérieur (par exemple, content://com.example.slice.provider/
).
L'extrait de code suivant vous montre comment procéder :
Kotlin
class MyApplication : Application() { override fun onCreate() { super.onCreate() grantSlicePermissions() } private fun grantSlicePermissions() { val context = applicationContext val sliceProviderUri = Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(SLICE_AUTHORITY) .build() val assistantPackage = getAssistantPackage(context) ?: return SliceManager.getInstance(context) .grantSlicePermission(assistantPackage, sliceProviderUri) } private fun getAssistantPackage(context: Context): String? { val packageManager = context.packageManager val resolveInfoList = packageManager.queryIntentServices( Intent(VoiceInteractionService.SERVICE_INTERFACE), 0 ) return if (resolveInfoList.isEmpty()) { null } else resolveInfoList[0].serviceInfo.packageName } companion object { private const val SLICE_AUTHORITY = "..." } }
Java
public class MyApplication extends Application { private static final String SLICE_AUTHORITY = "..."; @Override public void onCreate() { super.onCreate(); grantSlicePermissions(); } private void grantSlicePermissions() { Context context = getApplicationContext(); Uri sliceProviderUri = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(SLICE_AUTHORITY) .build(); String assistantPackage = getAssistantPackage(context); if (assistantPackage == null) { return; } SliceManager.getInstance(context) .grantSlicePermission(assistantPackage, sliceProviderUri); } private String getAssistantPackage(Context context) { PackageManager packageManager = context.getPackageManager(); ListresolveInfoList = packageManager.queryIntentServices( new Intent(VoiceInteractionService.SERVICE_INTERFACE), 0); if (resolveInfoList.isEmpty()) { return null; } return resolveInfoList.get(0).serviceInfo.packageName; } }
Journalisation des segments d'application
Pour déclencher des actions dans l'application, Google consigne les données suivantes concernant votre segment d'application (en particulier à partir de l'objet SliceMetadata
) :
Nous ne consignons pas les informations SliceMetadata
suivantes :
L'Assistant Google ne dispose donc d'aucune information concernant les sélections des utilisateurs par rapport à un segment d'application précis.
Consignes relatives à la qualité pour l'intégration des segments d'application
Cette section présente les exigences clés et les bonnes pratiques liées à l'intégration d'actions dans les applications avec des segments d'application.
Exigences générales
- Veillez à définir une action prioritaire pour chaque segment d'application.
- Lors du chargement du contenu du segment d'application, assurez-vous de définir le champ
isLoading
dans l'API des segments d'application sur "Vrai" si le segment d'application renvoyé est un segment de chargement (et "Faux" dans le cas contraire). - Pour signaler des conditions d'erreur, utilisez la méthode
setIsError()
afin d'indiquer à Google que le contenu des segments d'application ne s'est pas chargé correctement ou que la requête de l'utilisateur ne peut pas être traitée.
Contenu des segments d'application
- (Obligatoire) Ne diffusez aucune annonce dans vos segments d'application.
- (Obligatoire) N'ajoutez pas d'informations en en-tête ou en pied de page à vos segments d'application. Google les fournit automatiquement.
- Assurez-vous que le contenu des segments d'application reste entièrement axé sur le traitement de l'intent. N'essayez pas de traiter plusieurs intents avec un seul segment d'application et n'ajoutez pas de contenu non pertinent.
Gérer l'authentification
- (Obligatoire) Lorsque l'authentification de l'utilisateur est nécessaire pour terminer un parcours utilisateur, renvoyez un segment d'application expliquant que l'utilisateur doit continuer dans l'application. L'authentification utilisateur intégrée à l'Assistant Google n'est pas compatible avec les actions dans les applications.
- Si les utilisateurs autorisent votre application à afficher des données à l'aide de segments d'application, vous pouvez renvoyer un segment d'application de type "Erreur" au moment de l'exécution pour les utilisateurs non autorisés.
Liens profonds
- (Obligatoire) Utilisez un lien profond pour rediriger l'utilisateur vers le bon écran de votre application plutôt que vers l'écran d'accueil.
- (Obligatoire) Dans le fichier
shortcuts.xml
, proposez toujours le traitement des liens profonds de remplacement en plus du traitement de segments d'application pour un intent intégré spécifique. Il existe une exception à cette règle si aucun mappage de paramètres n'est défini pour cette action dans l'application, auquel cas seul le traitement des segments d'application est nécessaire.