
Aptabase 的 Tauri 插件
此插件允许您将您的应用程序与 Aptabase, 开源、 隐私第一 和 移动、 桌面和 Web Apps 的简单分析 中可以分析的事件连接在一起 .
安装
安装核心插件,将以下内容添加到您的 Cargo.toml 文件 :
src-tauri/Cargo.toml
[dependencies]
tauri-plugin-aptabase = "1.3.0"
[dependencies]
tauri-plugin-aptabase = { git = "https://github.com/aptabase/tauri-plugin-aptabase" }
您可以使用您的首选 JavaScript 软件包管理器安装 JavaScript Guest 绑定
npm add @aptabase/tauri
npm add https://github.com/aptabase/tauri-plugin-aptabase
使用量
首先,你必须得到你的 App Key 从Aptabase可以找到它 Instructions 菜单.
然后用 Tauri 注册插件 :
src-tauri/src/main.rs
#[tokio::main]
async fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_aptabase::Builder::new("<YOUR_APP_KEY>").build()) // 👈 this is where you enter your App Key
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
最后加点 aptabase:allow-track-event 进入您的访问控制列表.
您可以从 Rust 中导入 tauri_plugin_aptabase::EventTracker 特质和呼唤 track_event 方法打开 App, (中文(简体) ), AppHandle 或者说 Window。 。 。 .
举例来说,你可以添加 app_started 财务报告和审定财务报表 app_exited 像这样的事件:
use tauri_plugin_aptabase::EventTracker;
#[tokio::main]
async fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_aptabase::init("<YOUR_APP_KEY>".into()))
.setup(|app| {
app.track_event("app_started", None);
Ok(())
})
.build(tauri::generate_context!())
.expect("error while running tauri application")
.run(|handler, event| match event {
tauri::RunEvent::Exit { .. } => {
handler.track_event("app_exited", None);
handler.flush_events_blocking();
}
_ => {}
})
}
这个 trackEvent 函数也可以通过 JavaScript 宾客绑定程序获得 :
import { trackEvent } from "@aptabase/tauri";
trackEvent("save_settings") // An event with no properties
trackEvent("screen_view", { name: "Settings" }) // An event with a custom property
几个重要说明:
- 插件会自动增强事件,提供一些有用的信息,如OS,app版本等.
- 你控制着被送到阿普塔基地的东西 此插件不会自动跟踪任何事件, 您需要调用
trackEvent手动.- 因此,一般建议在启动时至少跟踪一个事件
- 你不需要等待着
trackEvent函数,会在后台运行. - 只允许自定义属性上的字符串和数字值
报告错误
错误报告在β中. 报告出现在
Errors你的Aptabase仪表板的一页.
使用 track_error 报告在Rust发现和处理的错误 tauri_plugin_aptabase::ErrorTracker 特点 App, (中文(简体) ), AppHandle 或者说 Window数字 :
use tauri_plugin_aptabase::ErrorTracker;
if let Err(err) = std::fs::read_to_string("settings.json") {
app.track_error(&err); // severity: error
}
这个 trackError 函数在 JavaScript 中也这样做。 添加 aptabase:allow-track-error 首先访问控制列表:
import { trackError } from "@aptabase/tauri";
try {
await saveSettings();
} catch (error) {
trackError(error); // severity: error
}
对于您的应用程序无法恢复的错误, 请将报告标为致命 :
trackError(error, { fatal: true }); // severity: fatal
use tauri_plugin_aptabase::{ErrorReport, ErrorTracker};
app.track_error_report(ErrorReport::from_error(&err).with_fatal(true)); // severity: fatal
要自动报告崩溃和未发生错误, 注册插件时允许报告崩溃 :
tauri::Builder::default()
.plugin(tauri_plugin_aptabase::Builder::new("<YOUR_APP_KEY>").with_crash_reporting().build())
关于错误报告的几个重要说明:
- 主线上的恐慌结束了你的应用:据报道,这是致命的
crash,且应用程序等待3秒后报告才会出站. 在 Aync 命令中的恐慌或 Tauri 的 Aync 运行时的任务只结束此任务(taskException),在自己端的一线上有一个,只有那条线(unhandled: 二者均严重报告error。与with_panic_hook仍然运行. - 随着崩溃报告,网页视图的未发现出错(
unhandled和无所施舍的应许taskException报告的内容也包括在内。 这需要aptabase:allow-track-error允许. - 每份报告包括错误类型、消息、堆栈跟踪、严重性(
error或者说fatal及其如何被俘获(handled, (中文(简体) ),unhandled, (中文(简体) ),taskException或者说crash) (中文(简体) ). 报告一个 Rust 错误,有其类型名称和导致它的错误;有其位置和回溯追踪的恐慌. - 错误以单独的每月错误配额计算 。 当它被耗尽时,服务器会拒绝新的报告直到它重新发送,插件会放弃它们而不是重试.
- 不通过Rust的惊慌处理器(英语:Segfault (sigfault) or a biliot in hern code)的崩溃没有被捕获.
通过.env提供APTABASE KEY
可以在编译时使用 .env 文件加载 APTABASE KEY dotenvy_macro 货箱。 这个 .env 文件需要为
输入 src-tauri 该目录 dotevny_macro 要找到合适的箱子.
添加数据 use 声明您正在创建 tauri 应用程序的地方( 可能) lib.rs 塔里v2,然后叫它在哪里 你会把钥匙.
use tauri_plugin_aptabase::EventTracker;
use dotenvy_macro::dotenv;
#[cfg_attr(mobile, tauri::mobile_entry_point)]
/// This function sets up and runs a Rust application using the Tauri framework, with various plugins
/// and event handlers.
pub fn run() {
tauri::Builder::default()
.build(tauri::generate_context!())
.plugin(tauri_plugin_aptabase::Builder::new(dotenv!("APTABASE_KEY")).build())
.expect("Error when building tauri app")
.run(|handler, event| match event {
tauri::RunEvent::Exit { .. } => {
handler.track_event("app_exited", None);
handler.flush_events_blocking();
}
tauri::RunEvent::Ready { .. } => {
handler.track_event("app_started", None);
}
_ => {}
});
}
交付
事件在内存中排入队列, 在背景中发送: 每60秒发布会构建, 每2秒调试会构建( set) flush_interval 内 InitOptions {\fn华文楷体\fs16\1che0e0e0}只要你打电话 flush_events_blocking()。 。 。 .
- 每次请求最多可举办25个活动.
- 如果请求没有到达服务器(没有网络,超时)或服务器有5xx状态的回答,其事件会被排队等待下一次冲出.
- 如果服务器以其他任何不成功状态如 4xx 回答,则其事件被放弃.
- 队列没有被保存到磁盘中 .
请求使用 MacOS 和 Windows 上的系统代理设置,以及 HTTP_PROXY, (中文(简体) ), HTTPS_PROXY, (中文(简体) ), ALL_PROXY 财务报告和审定财务报表 NO_PROXY 每个平台的环境变量.
TLS 后端
插件发送事件与 西边。您选择其 TLS 后端,并带有其中一种货物特性:
| 特性 | 后端 |
|---|---|
default-tls (默认) | reqwest 的默认后端, 目前 生锈 |
rustls-tls | 生锈 |
native-tls | 该平台的TLS库:Linux和Android上的OpenSSL,Apple平台上的Security.framework,Windows上的SChannel |
要切换后端,请关闭默认特性 :
[dependencies]
tauri-plugin-aptabase = { version = "1.3", default-features = false, features = ["native-tls"] }
也没有 default-tls 也没有 rustls-tls 需要 OpenSSL,所以无需它就可以交叉编译Android和Linux.
AI/LLM整合说明见 页:1