Notificaciones
Envía notificaciones nativas a tu usuario utilizando el plugin de notificaciones.
Plataformas Soportadas
Sección titulada “Plataformas Soportadas”Este plugin requiere una versión de Rust de al menos 1.77.2
| Plataforma | Nivel | Notas |
|---|---|---|
| windows | Solo funciona para aplicaciones instaladas. Muestra el nombre e ícono de powershell en desarrollo. | |
| linux | ||
| macos | ||
| android | ||
| ios |
Configuración
Sección titulada “Configuración”Instala el plugin de notificaciones para comenzar.
Usa el gestor de paquetes de tu proyecto para agregar la dependencia:
npm run tauri add notificationyarn run tauri add notificationpnpm tauri add notificationdeno task tauri add notificationbun tauri add notificationcargo tauri add notification-
Ejecuta el siguiente comando en la carpeta
src-tauripara agregar el plugin a las dependencias del proyecto enCargo.toml:cargo add tauri-plugin-notification -
Modifica
lib.rspara inicializar el plugin:src-tauri/src/lib.rs #[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() {tauri::Builder::default().plugin(tauri_plugin_notification::init()).run(tauri::generate_context!()).expect("error while running tauri application");} -
Si quieres usar notificaciones en JavaScript, instala también el paquete npm:
npm install @tauri-apps/plugin-notificationyarn add @tauri-apps/plugin-notificationpnpm add @tauri-apps/plugin-notificationdeno add npm:@tauri-apps/plugin-notificationbun add @tauri-apps/plugin-notification
Aquí tienes algunos ejemplos de cómo usar el plugin de notificaciones:
- Enviar notificaciones a los usuarios
- Añadir una acción a una notificación
- Añadir un archivo adjunto a una notificación
- Enviar una notificación en un canal específico
El plugin de notificaciones está disponible tanto en JavaScript como en Rust.
Enviar Notificación
Sección titulada “Enviar Notificación”Sigue estos pasos para enviar una notificación:
-
Comprobar si el permiso está concedido
-
Solicitar permiso si no está concedido
-
Enviar la notificación
import { isPermissionGranted, requestPermission, sendNotification,} from '@tauri-apps/plugin-notification';// when using `"withGlobalTauri": true`, you may use// const { isPermissionGranted, requestPermission, sendNotification, } = window.__TAURI__.notification;
// Do you have permission to send a notification?let permissionGranted = await isPermissionGranted();
// If not we need to request itif (!permissionGranted) { const permission = await requestPermission(); permissionGranted = permission === 'granted';}
// Once permission has been granted we can send the notificationif (permissionGranted) { sendNotification({ title: 'Tauri', body: 'Tauri is awesome!' });}tauri::Builder::default() .plugin(tauri_plugin_notification::init()) .setup(|app| { use tauri_plugin_notification::NotificationExt; app.notification() .builder() .title("Tauri") .body("Tauri is awesome") .show() .unwrap();
Ok(()) }) .run(tauri::generate_context!()) .expect("error while running tauri application");Acciones
Sección titulada “Acciones”Las acciones añaden botones e insumos interactivos a las notificaciones. Úsalas para crear una experiencia adaptable para tus usuarios.
Registrar Tipos de Acción
Sección titulada “Registrar Tipos de Acción”Registra tipos de acción para definir elementos interactivos:
import { registerActionTypes } from '@tauri-apps/plugin-notification';
await registerActionTypes([ { id: 'messages', actions: [ { id: 'reply', title: 'Reply', input: true, inputButtonTitle: 'Send', inputPlaceholder: 'Type your reply...', }, { id: 'mark-read', title: 'Mark as Read', foreground: false, }, ], },]);Propiedades de la Acción
Sección titulada “Propiedades de la Acción”| Propiedad | Descripción |
|---|---|
id |
Identificador único para la acción |
title |
Texto a mostrar para el botón de acción |
requiresAuthentication |
Requiere autenticación del dispositivo |
foreground |
Trae la app al primer plano cuando se activa |
destructive |
Muestra la acción en rojo en iOS |
input |
Habilita la entrada de texto |
inputButtonTitle |
Texto para el botón de enviar entrada |
inputPlaceholder |
Texto de marcador de posición para el campo de entrada |
Escuchar Acciones
Sección titulada “Escuchar Acciones”Escucha las interacciones del usuario con las acciones de notificación:
import { onAction } from '@tauri-apps/plugin-notification';
await onAction((notification) => { console.log('Action performed:', notification);});Archivos Adjuntos
Sección titulada “Archivos Adjuntos”Los archivos adjuntos añaden contenido multimedia a las notificaciones. El soporte varía según la plataforma.
import { sendNotification } from '@tauri-apps/plugin-notification';
sendNotification({ title: 'New Image', body: 'Check out this picture', attachments: [ { id: 'image-1', url: 'asset:///notification-image.jpg', }, ],});Propiedades de Archivos Adjuntos
Sección titulada “Propiedades de Archivos Adjuntos”| Propiedad | Descripción |
|---|---|
id |
Identificador único |
url |
URL del contenido usando el protocolo asset:// o file:// |
Nota: Prueba los archivos adjuntos en tus plataformas de destino para asegurar la compatibilidad.
Canales
Sección titulada «Canales»Los canales organizan las notificaciones en categorías con diferentes comportamientos. Aunque se usan principalmente en Android, proporcionan una API consistente en todas las plataformas.
Crear un Canal
Sección titulada “Crear un Canal”import { createChannel, Importance, Visibility,} from '@tauri-apps/plugin-notification';
await createChannel({ id: 'messages', name: 'Messages', description: 'Notifications for new messages', importance: Importance.High, visibility: Visibility.Private, lights: true, lightColor: '#ff0000', vibration: true, sound: 'notification_sound',});Propiedades del Canal
Sección titulada “Propiedades del Canal”| Propiedad | Descripción |
|---|---|
id |
Identificador único |
name |
Nombre para mostrar |
description |
Descripción del propósito |
importance |
Nivel de prioridad (None, Min, Low, Default, High) |
visibility |
Configuración de privacidad (Secret, Private, Public) |
lights |
Habilitar LED de notificación (Android) |
lightColor |
Color del LED (Android) |
vibration |
Habilitar vibraciones |
sound |
Nombre de archivo de sonido personalizado |
Gestionar Canales
Sección titulada “Gestionar Canales”Listar canales existentes:
import { channels } from '@tauri-apps/plugin-notification';
const existingChannels = await channels();Eliminar un canal:
import { removeChannel } from '@tauri-apps/plugin-notification';
await removeChannel('messages');Usar Canales
Sección titulada “Usar Canales”Enviar una notificación usando un canal:
import { sendNotification } from '@tauri-apps/plugin-notification';
sendNotification({ title: 'New Message', body: 'You have a new message', channelId: 'messages',});Nota: Crea canales antes de enviar notificaciones que los referencien. Los IDs de canal no válidos evitan que se muestren las notificaciones.
Consideraciones de Seguridad
Sección titulada “Consideraciones de Seguridad”Aparte de los procedimientos normales de sanitización de la entrada del usuario, actualmente no hay consideraciones de seguridad conocidas.
Permiso Predeterminado
Este conjunto de permisos configura qué características de notificación se exponen por defecto.
Permisos Otorgados
Permite todas las características relacionadas con notificaciones.
Este conjunto de permisos predeterminado incluye lo siguiente:
allow-is-permission-grantedallow-request-permissionallow-notifyallow-register-action-typesallow-register-listenerallow-cancelallow-get-pendingallow-remove-activeallow-get-activeallow-check-permissionsallow-showallow-batchallow-list-channelsallow-delete-channelallow-create-channelallow-permission-state
Tabla de Permisos
| Identificador | Descripción |
|---|---|
|
|
Habilita el comando batch sin ningún scope preconfigurado. |
|
|
Deniega el comando batch sin ningún scope preconfigurado. |
|
|
Habilita el comando cancel sin ningún alcance preconfigurado. |
|
|
Deniega el comando cancel sin ningún alcance preconfigurado. |
|
|
Habilita el comando check_permissions sin ningún alcance preconfigurado. |
|
|
Deniega el comando check_permissions sin ningún alcance preconfigurado. |
|
|
Habilita el comando create_channel sin ningún scope preconfigurado. |
|
|
Deniega el comando create_channel sin ningún scope preconfigurado. |
|
|
Habilita el comando delete_channel sin ningún scope preconfigurado. |
|
|
Deniega el comando delete_channel sin ningún scope preconfigurado. |
|
|
Habilita el comando get_active sin ningún scope preconfigurado. |
|
|
Deniega el comando get_active sin ningún scope preconfigurado. |
|
|
Habilita el comando get_pending sin ningún scope preconfigurado. |
|
|
Deniega el comando get_pending sin ningún scope preconfigurado. |
|
|
Habilita el comando is_permission_granted sin ningún scope preconfigurado. |
|
|
Deniega el comando is_permission_granted sin ningún scope preconfigurado. |
|
|
Habilita el comando list_channels sin ningún scope preconfigurado. |
|
|
Deniega el comando list_channels sin ningún scope preconfigurado. |
|
|
Habilita el comando notify sin ningún scope preconfigurado. |
|
|
Deniega el comando notify sin ningún scope preconfigurado. |
|
|
Habilita el comando permission_state sin ningún scope preconfigurado. |
|
|
Deniega el comando permission_state sin ningún scope preconfigurado. |
|
|
Habilita el comando register_action_types sin ningún scope preconfigurado. |
|
|
Deniega el comando register_action_types sin ningún scope preconfigurado. |
|
|
Habilita el comando register_listener sin ningún scope preconfigurado. |
|
|
Deniega el comando register_listener sin ningún scope preconfigurado. |
|
|
Habilita el comando remove_active sin ningún scope preconfigurado. |
|
|
Deniega el comando remove_active sin ningún scope preconfigurado. |
|
|
Habilita el comando request_permission sin ningún scope preconfigurado. |
|
|
Deniega el comando request_permission sin ningún scope preconfigurado. |
|
|
Habilita el comando show sin ningún scope preconfigurado. |
|
|
Deniega el comando show sin ningún scope preconfigurado. |
© 2026 Colaboradores de Tauri. CC-BY / MIT