Google Assistant Slices pour Android — partie 2
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.
Que sont les tranches ?
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.
Déclarer la tranche dans Shortcuts.xml
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>
Création du SliceProvider
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}
Déclarer SliceProvider dans AndroidManifest
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>
Accorder des autorisations de tranche
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 { ... }
}
}
Aperçu avec SliceViewer
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
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