Saltar al contenido

Publicado Tauri 2.0.0-alpha.4

Imagen Principal del Lanzamiento de Tauri 1.2

Se ha publicado una nueva versión alpha para la 2.0. Esta versión incluye todos los cambios de la próxima versión Tauri 1.3, un cambio de ruptura importante en el cliente HTTP y capacidades móviles nativas para los plugins de Tauri.

Asegúrate de actualizar tanto las dependencias de npm como las de Cargo a la última versión alpha. Puedes actualizar las dependencias de npm con:

npm install @tauri-apps/cli@next @tauri-apps/api@next

Recrea los proyectos móviles para usar las nuevas funciones:

Ventana de terminal
rm -r src-tauri/gen
tauri android init
tauri ios init

El cliente HTTP predeterminado que usa attohttpc se eliminó debido a problemas con el proxy del servidor de desarrollo en Windows. Se eliminaron todas las flags de características reqwest-* porque reqwest es ahora el cliente que usamos.

Funcionalidad móvil nativa para plugins de Tauri

Sección titulada “Funcionalidad móvil nativa para plugins de Tauri”

Un plugin de Tauri ahora puede acceder a iOS vía Swift y a las API de Android vía código Kotlin o Java, simplificando el uso de interfaces de la plataforma como la cámara o la geolocalización. Para inicializar los proyectos de iOS y Android en un plugin existente, ejecuta tauri plugin ios add y tauri plugin android add. Los nuevos plugins incluyen automáticamente toda la configuración necesaria para escribir código móvil nativo.

Aquí tienes un ejemplo de un plugin que toma un valor de cadena y resuelve un objeto:

Android plugin:

ExamplePlugin.kt
package com.plugin.example
import android.app.Activity
import app.tauri.annotation.Command
import app.tauri.annotation.TauriPlugin
import app.tauri.plugin.JSObject
import app.tauri.plugin.Plugin
import app.tauri.plugin.Invoke
@TauriPlugin
class ExamplePlugin(private val activity: Activity): Plugin(activity) {
@Command
fun ping(invoke: Invoke) {
val value = invoke.getString("value") ?: ""
val ret = JSObject()
ret.put("value", value)
invoke.resolve(ret)
}
}

iOS plugin:

ExamplePlugin.swift
import UIKit
import WebKit
import Tauri
class ExamplePlugin: Plugin {
@objc public func ping(_ invoke: Invoke) throws {
let value = invoke.getString("value")
invoke.resolve(["value": value as Any])
}
}
@_cdecl("init_plugin_example")
func initPlugin(name: SRString, webview: WKWebView?) {
Tauri.registerPlugin(webview: webview, name: name.toString(), plugin: ExamplePlugin())
}

Rust code to initialize the plugin:

use tauri::{
plugin::{Builder, TauriPlugin},
Manager, Runtime,
};
#[cfg(target_os = "ios")]
tauri::ios_plugin_binding!(init_plugin_example);
pub fn init<R: Runtime>() -> TauriPlugin<R> {
Builder::new("example")
.setup(|app, api| {
#[cfg(target_os = "android")]
api.register_android_plugin("com.plugin.example", "ExamplePlugin")?;
#[cfg(target_os = "ios")]
api.register_ios_plugin(init_plugin_example)?;
Ok(())
})
.build()
}

Código del frontend para llamar al comando del plugin:

import { invoke } from '@tauri-apps/api/tauri';
invoke('plugin:example|ping', { value: 'Tauri' }).then(({ value }) =>
console.log('Response', value)
);

Echa un vistazo a los próximos plugin de cámara y plugin de ruta.


© 2026 Colaboradores de Tauri. CC-BY / MIT