You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tauri-plugins-workspace/plugins/deep-link/example/main.rs

40 lines
1.6 KiB

#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use tauri::Manager;
fn main() {
// prepare() checks if it's a single instance and tries to send the args otherwise.
// It should always be the first line in your main function (with the exception of loggers or similar)
tauri_plugin_deep_link::prepare("de.fabianlars.deep-link-test");
// It's expected to use the identifier from tauri.conf.json
// Unfortuenetly getting it is pretty ugly without access to sth that implements `Manager`.
tauri::Builder::default()
.setup(|app| {
// If you need macOS support this must be called in .setup() !
// Otherwise this could be called right after prepare() but then you don't have access to tauri APIs
let handle = app.handle();
tauri_plugin_deep_link::register(
"my-scheme",
move |request| {
dbg!(&request);
handle.emit_all("scheme-request-received", request).unwrap();
},
)
.unwrap(/* If listening to the scheme is optional for your app, you don't want to unwrap here. */);
// If you also need the url when the primary instance was started by the custom scheme, you currently have to read it yourself
/*
#[cfg(not(target_os = "macos"))] // on macos the plugin handles this (macos doesn't use cli args for the url)
if let Some(url) = std::env::args().nth(1) {
app.emit_all("scheme-request-received", url).unwrap();
}
*/
Ok(())
})
// .plugin(tauri_plugin_deep_link::init()) // consider adding a js api later
.run(tauri::generate_context!())
.expect("error while running tauri application");
}