Android

Google Assistant Slices pour Android — partie 2

Le 6 février 2022 - 4 minutes de lecture

 

Dans un article précédent, nous avons vu comment ajouter la prise en charge de Google Assistant à votre application. Il est maintenant temps d’aller plus loin et d’offrir une belle expérience utilisateur directement dans Google Assistant, afin que l’utilisateur n’ait pas à lancer l’application. pour interagir avec elle. Cela se fera grâce à Slices.

Les tranches sont de petites cartes d’interface utilisateur, que Google Assistant affiche pour offrir une expérience utilisateur plus riche. Ils peuvent contenir des informations extraites des API, ainsi que des images et des boutons d’action.

Ils sont un moyen d’interagir avec votre application sans la démarrer en plein écran, l’expérience utilisateur est contextuelle à Google Assistant et conversationnelle.

Les tranches utilisent des blocs d’interface utilisateur de base tels que la liste, l’en-tête, la ligne, les images, les boutons… Le développeur peut construire l’interface utilisateur de manière déclarative un peu comme Jetpack Compose.

Les tranches offrent un moyen rapide d’accéder aux fonctionnalités de l’application, alors restez simple.

tranches d’exemple

Comme pour App Action, les tranches doivent être déclarées dans shortcuts.xml Google propose un large éventail d’actions/captilités prédéfinies, veuillez consulter mon article précédent.

À l’intérieur d’une capacité, vous pouvez ajouter un nœud enfant slice et prévoir url-template ce modèle sera utilisé pour déclencher le Slice.

Notez qu’il est recommandé d’utiliser « contenu » comme schéma.

<capability android:name="actions.intent.OPEN_APP_FEATURE">
<slice>
<url-template
android:name="content://com.example.android.app.provider/slice{?feature}" />

</slice>
</capability>

 

Le Slice Provider est en charge de créer un objet Slice à partir d’un URI (url-template ci-dessus).

Vous devriez prolonger SliceProvider et mettre en œuvre 2 méthodes :

  • onBindSlice(), il faut un Uri, et ce que vous devez faire est de mapper cet Uri avec votre tranche et de renvoyer la tranche
  • onCreateSliceProvider(), vous pouvez effectuer des tâches préliminaires, mais quelque chose de léger, ne bloquez pas le thread et renvoyez true.
  • enfin et surtout, vous pouvez afficher l’autorité Slice, il s’agit d’un nom unique qui permettra au système de déclencher la Slice, voir Grant Permission ci-dessous.
class MySliceProvider : SliceProvider() {
companion object {
const val SLICE_AUTHORITY = "com.example.android.app.provider"
}    override fun onBindSlice(sliceUri: Uri?): Slice? {
// you can filter the sliceUri here to provide the appropriate slice
return createSlice()
}    override fun onCreateSliceProvider(): Boolean = true}

L’application doit déclarer quelle classe est chargée de fournir les tranches (le SliceProvider). Cela se fait dans AndroidManifest comme ci-dessous.

Remarquez que le authorities doit correspondre à ce que vous avez déclaré dans votre tranche (shortcut.xml) ainsi qu’à SLICE_AUTHORITY dans le SliceProvider. Le fournisseur filtre également l’intention de la catégorie « Slice »

<application>
...
<provider android:name="MySliceProvider"
android:authorities="com.example.android.app.provider"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.app.slice.category.SLICE" />
</intent-filter>
</provider>

Comme souligné précédemment, Google Assistant a besoin d’une autorisation

private fun grantAssistantPermissions() {
getAssistantPackage()?.let { assistantPackage ->
val sliceProviderUri = Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(MySliceProvider.SLICE_AUTHORITY)
.build()

SliceManager.getInstance(this).grantSlicePermission(assistantPackage, sliceProviderUri)
}
}

 

En utilisant les blocs de construction (liste, en-tête, ligne…) fournis par le DSL Kotlin, vous pouvez rapidement créer des Slices.

// SliceProvider
fun createSlice() {
return list(...) {
header {
title = "My title"
subtitle = "Subtitle"
// Defines the primary action when slice is clicked
primaryAction = SliceAction.create(...)
}
row { ... }
}
}

SliceViewer est un outil de Google qui vous permet de prévisualiser les Slices. Vous pouvez le télécharger ci-dessous et le charger dans votre appareil de test ou votre émulateur.

adb install -r -t slice-viewer.apk

Vous pouvez maintenant exécuter la commande suivante pour démarrer SliceViewer. Remarquez comment le mot-clé slice a été préfixé au contenu.

adb shell am start -a android.intent.action.VIEW -d 
slice-content://com.example.android.app.provider/slice
exemple de visionneuse de tranches

Nous avons terminé avec cette partie. Nous avons appris à enregistrer des tranches dans l’application et à fournir des tranches à Google Assistant.

Dans le prochain article, nous apprendrons comment rendre l’expérience encore plus accessible, achetez contrôler l’application depuis la tranche sans la lancer.

Implémentation complète, exemple :

https://github.com/sonique6784/SQLCipherPerformance/commit/1dceced26f07250b41c080ad6e121704eae86ba7

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.