Skip to main content
将 Mellowtel 集成到你的 Windows 桌面应用中,让用户可以通过分享未使用的互联网带宽来换取奖励或高级功能。
用户同意是必须的。 如果在用户选择加入之前调用 StartAsync(),SDK 会抛出 InvalidOperationException

前提条件

  • 一个 Mellowtel 账户和来自仪表板Integration ID。每个桌面应用都有其唯一的 Integration ID。
  • .NET 10 SDK
  • Windows 10 或 Windows 11
  • 一个 .NET 桌面应用(Console、WPF 或 Windows Forms)
想在将其集成到自己的应用之前查看完整的实际集成吗?mellowtel-pomodoro-windows WPF 示例展示了完整流程:同意对话框、设置切换和后台生命周期。

安装

Mellowtel for Windows 在 NuGet 上作为 Mellowtel.Win 提供。

1. 安装包

从你的项目目录中:
或者在你的 .csproj 中添加一个 PackageReference

2. 添加到你的代码中

YOUR_INTEGRATION_ID 替换为来自 Mellowtel 仪表板的 Integration ID,并将 PluginId 设置为你的应用的稳定标识符。ShowConsentDialog() 是你自己的 UI,只有当用户明确同意时才返回 true。请参阅下面的用户同意

配置选项

MellowtelOptions 允许你调整一些设置:
属性类型默认值描述
PluginIdstring"mellowtel-win"你的应用的稳定标识符。设置为唯一的值。
MaxDailyRateint内置默认值SDK 每天将处理的最大请求数。
DisableLogsbooltrue设置为 false 以在开发期间启用 SDK 日志。

按应用类型的示例

观察连接状态

Mellowtel 实例公开了一个 ConnectionStateChanged 事件,每当与 Mellowtel 后端的底层 WebSocket 连接或断开时触发。上面的 WPF 和 Windows Forms 示例订阅了它以驱动状态指示器。负载是一个 bool,其中 true 表示已连接,false 表示未连接。 事件在后台线程上触发,因此强制执行线程关联的 UI 框架必须将更新调度到 UI 线程。在 WPF 中使用 Dispatcher.Invoke,在 Windows Forms 中使用 Control.Invoke(如上面的示例所示)。
关于 WPF async void OnClosing 模式。 上面的 WPF 示例使用 protected override async void OnClosing,这是最简单的形式,但有一个微妙的问题:base.OnClosing(e)StopAsync() 仍在等待时同步调用,因此窗口可能在清理完成之前关闭。对于大多数应用来说,这没问题,因为进程会立即退出。如果你需要一个保证的优雅关闭(例如,刷新遥测数据),请遵循 Microsoft 文档的延迟模式,在其中设置 e.Cancel = trueawait 你的异步工作,然后显式关闭窗口。

用户同意

显示同意对话框是必须的。SDK 强制执行这一点:如果用户未选择加入,StartAsync() 会抛出 InvalidOperationException

你的同意对话框必须包含的内容

1

解释 Mellowtel 的作用

使用简单的语言。示例:“此应用使用 Mellowtel 分享你的未使用互联网带宽。这让你可以[受益/功能]。你可以随时在设置中选择退出。”
2

给用户明确的选择

包含明确的接受和拒绝选项。
3

链接到政策

包含到服务条款隐私政策的链接。

让用户在设置中更改他们的同意

对于更丰富的 UI(例如,显示用户首次选择加入的时间),GetOptInDetails() 返回选择加入状态以及选择加入和退出的时间戳:

故障排除

  1. 确保你的项目目标是 .NET 10 或更高版本。Mellowtel.Win 需要 net10.0
  2. 清除 NuGet 缓存并恢复:
StartAsync() 需要明确的同意。在你的同意对话框返回正面结果后调用 OptIn(),然后调用 StartAsync()。对于后续启动时的静默恢复,使用 StartIfOptedInAsync(),当用户未选择加入时这是一个无操作。

预计完成时间:10-15 分钟。 如果你需要帮助或有反馈,请通过 info@mellowtel.com 联系我们或加入我们的 Discord 社区