Les notifications affichées sur les montres ou sur les téléphones utilisent les mêmes API et ont la même structure.
Sur une montre, les notifications peuvent s'afficher de deux manières :
- Une application mobile crée une notification que le système associe automatiquement (en mode Pont) à la montre.
- Une appli connectée crée une notification.
Dans les deux cas, les développeurs utilisent la classe NotificationCompat.Builder pour créer des notifications. Lorsque vous créez des notifications avec la classe de compilateur, le système prend soin de les afficher correctement. Par exemple, lorsque vous envoyez des notifications à partir de votre application mobile, chacune d'elles apparaît sous la forme d'une carte dans le flux de notifications.
Consultez l'exemple suivant pour voir comment les notifications s'affichent.
Figure 1. La même notification affichée sur un téléphone et sur une montre.
Pour obtenir de meilleurs résultats, utilisez l'une des sous-classes NotificationCompat.Style.
Remarque : Si vous utilisez RemoteViews, les notifications de mise en page personnalisées sont supprimées, et l'accessoire connecté n'affiche que le texte et les icônes.
Notifications recommandées pour les accessoires connectés
Définissez des notifications à développer, car elles constituent un excellent moyen de susciter l'intérêt des utilisateurs d'accessoires connectés. L'état réduit est affiché dans la barre de notification, ce qui permet d'y jeter un coup d'œil rapide. Si l'utilisateur appuie dessus, la notification se développe et offre une expérience immersive avec des contenus et des actions supplémentaires qu'il peut faire défiler.
Vous pouvez créer une notification à développer comme vous le feriez sur mobile avec n'importe quelle sous-classe NotificationCompat.Style. Par exemple, une notification standard utilisant NotificationCompat.MessagingStyle se présente comme suit :
Figure 2. Exemple de notification MessagingStyle sur Wear OS
Comme vous pouvez le voir, la notification comporte plusieurs actions qui sont empilées au bas de l'état développé.
Conseil : Si vos notifications contiennent une action de réponse (pour une application de chat, par exemple), vous pouvez améliorer leur comportement. Par exemple, vous pouvez autoriser les réponses par saisie vocale directement à partir de l'accessoire connecté ou les réponses textuelles prédéfinies avec setChoices().
Pour en savoir plus, consultez Ajouter le bouton de réponse.
Éviter les notifications en double
Par défaut, les notifications provenant d'une application pour téléphone associé sont "pontées" à toutes les montres associées. C'est une excellente option si aucune application connectée n'est installée.
Cependant, si vous créez une application pour montre autonome alors que vous disposez déjà d'une application pour téléphone associé, cela créera des notifications en double.
Wear OS offre la possibilité d'arrêter l'envoi de notifications en double avec les API Bridging. C'est particulièrement important pour les applications sur les appareils exécutant Wear OS 5 ou version ultérieure, car certaines notifications qui peuvent être ignorées sur un appareil mobile ne peuvent pas l'être sur l'appareil Wear OS. Pour en savoir plus, consultez Options de pontage des notifications.
Ajouter à une notification des fonctionnalités propres à l'accessoire connecté
Si vous devez ajouter à une notification des fonctionnalités propres à l'accessoire connecté, vous pouvez utiliser la classe
NotificationCompat.WearableExtender pour spécifier les options.
Pour utiliser cette API, procédez comme suit :
Remarque : Si vous utilisez la classe NotificationManager du framework, certaines fonctionnalités de NotificationCompat.WearableExtender ne répondent pas. Veillez donc à utiliser NotificationCompat.
Cet exemple montre comment définir une action spécifique à Wear sur la notification et comment définir l'
ID de suppression. Lorsque la notification est ignorée, toutes les autres notifications ayant le même ID de refus sont ignorées sur la montre et sur le téléphone associé. Pour récupérer un ID de refus, utilisez
getDismissalId().
// This intent will be fired as a result of the user clicking the "Open on watch" action. // However, it executes on the phone, not on the watch. Typically, the Activity should then use // RemoteActivityHelper to then launch the correct activity on the watch. val intent = Intent(context, LaunchOnWearActivity::class.java) val wearPendingIntent = PendingIntent.getActivity( context, wearRequestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) val openOnWatchAction = NotificationCompat.Action.Builder( R.drawable.watch, "Open on watch", wearPendingIntent ) .build() val wearableExtender = NotificationCompat.WearableExtender() // This action will only be shown on the watch, not on the phone. // Actions added to the Notification builder directly will not be shown on the watch, // because one or more actions are defined in the WearableExtender. .addAction(openOnWatchAction) // This synchronizes dismissals between watch and phone. .setDismissalId(chatId) val notification = NotificationCompat.Builder(context, channelId) // ... set other fields ... .extend(wearableExtender) .build()
Lancer l'application Téléphone depuis un wearable
Si vous utilisez des notifications associées, chaque notification inclut automatiquement un bouton permettant de lancer l'application sur le téléphone. Toutefois, si vous utilisez une notification locale créée sur la montre, procédez comme suit pour créer un bouton qui lance l'application sur le téléphone :
- Créez un
Activityqui étendConfirmationActivity. - Utilisez
RemoteActivityHelperdans le nouveauActivitypour lancer l'application Téléphone. - Lorsque vous créez l'
Intentpour lancer l'Activityà partir de la notification, définissez l'extraEXTRA_ANIMATION_TYPEsurOPEN_ON_PHONE_ANIMATION.
Remarque : Vous ne pouvez pas utiliser de BroadcastReceiver comme cible de l'action de notification.