Skip to main content
Mellowtel を Windows デスクトップアプリケーションに統合して、ユーザーが未使用のインターネット帯域幅を報酬やプレミアム機能と交換できるようにします。
ユーザーの同意が必須です。 ユーザーがオプトインしていない状態で StartAsync() を呼び出すと、SDK は InvalidOperationException をスローします。

前提条件

  • Mellowtel アカウントと ダッシュボード からの Integration ID。各デスクトップアプリには独自の Integration ID が与えられます。
  • .NET 10 SDK
  • Windows 10 または Windows 11
  • .NET デスクトップアプリケーション(コンソール、WPF、または Windows フォーム)
自分のアプリに組み込む前に、完全な実際の統合を見てみたいですか? mellowtel-pomodoro-windows WPF サンプルは、同意ダイアログ、設定トグル、バックグラウンドライフサイクルのフルフローを示しています。

インストール

Windows 用の Mellowtel は NuGet で Mellowtel.Win として提供されています。

1. パッケージをインストールする

プロジェクトディレクトリから:
または .csprojPackageReference を追加します:

2. コードに追加する

YOUR_INTEGRATION_ID を Mellowtel ダッシュボードからの Integration ID に置き換え、PluginId をアプリの安定した識別子に設定します。ShowConsentDialog() はユーザーが明示的に同意したときにのみ true を返す独自の UI です。以下の ユーザーの同意 を参照してください。

設定オプション

MellowtelOptions ではいくつかの項目を調整できます:
プロパティデフォルト説明
PluginIdstring"mellowtel-win"アプリの安定した識別子。ユニークなものに設定してください。
MaxDailyRateint組み込みのデフォルトSDK が1日に処理する最大リクエスト数。
DisableLogsbooltrue開発中に SDK ログを有効にするには false に設定します。

アプリケーションタイプ別の例

接続状態の監視

Mellowtel インスタンスは、Mellowtel のバックエンドへの WebSocket が接続または切断されるたびに発生する ConnectionStateChanged イベントを公開しています。上記の WPF および Windows フォームの例では、ステータスインジケーターを駆動するためにそれにサブスクライブしています。ペイロードは bool で、true は接続されていることを意味し、false は切断されていることを意味します。 イベントはバックグラウンドスレッドで発生するため、スレッドアフィニティを強制する UI フレームワークは、UI スレッドへの更新をマーシャリングする必要があります。WPF では Dispatcher.Invoke を使用し、Windows フォームでは Control.Invoke を使用します(上記の例で示されています)。
WPF の async void OnClosing パターンについて。 上記の WPF の例では、protected override async void OnClosing を使用していますが、これは最も簡単な形式ですが微妙な問題があります。base.OnClosing(e)StopAsync() がまだ待機している間に同期的に呼び出されるため、クリーンアップが終了する前にウィンドウが閉じる可能性があります。ほとんどのアプリでは、プロセスがその直後にすぐに終了するため、これは問題ありません。もし確実な優雅なシャットダウンが必要な場合(例えば、テレメトリをフラッシュするため)、Microsoft が文書化しているデファラルパターン に従って、e.Cancel = true を設定し、非同期作業を await し、その後ウィンドウを明示的に閉じてください。

ユーザーの同意

同意ダイアログの表示は 必須 です。SDK はこれを強制します: ユーザーがオプトインしていない場合、StartAsync()InvalidOperationException をスローします。

同意ダイアログに含めるべき内容

1

Mellowtel が何をするか説明する

平易な言葉を使ってください。例: “このアプリは Mellowtel を使用して未使用のインターネット帯域幅を共有します。これにより、[利益/機能] を得ることができます。設定でいつでもオプトアウトできます。”
2

ユーザーに明確な選択肢を与える

明確に受け入れるオプションと拒否するオプションを含めてください。
3

ポリシーへのリンクを含める

利用規約 および プライバシーポリシー へのリンクを含めてください。

設定でユーザーが同意を変更できるようにする

よりリッチな UI のために(例えば、ユーザーが最初にオプトインした時期を表示するため)、GetOptInDetails() はオプトインステータスとオプトインおよびオプトアウトのタイムスタンプを返します:

トラブルシューティング

  1. プロジェクトが .NET 10 以降をターゲットにしていることを確認してください。Mellowtel.Winnet10.0 を必要とします。
  2. NuGet キャッシュをクリアしてリストアします:
StartAsync() には明示的な同意が必要です。あなたの同意ダイアログが肯定的な結果を返した後、OptIn() を呼び出し、その後 StartAsync() を呼び出します。次回の起動時に静かに再開するには、ユーザーがオプトインしていない場合は何もしない StartIfOptedInAsync() を使用します。

完了までの推定時間: 10-15 分。 ヘルプが必要な場合やフィードバックがある場合は、info@mellowtel.com にお問い合わせいただくか、Discord コミュニティ に参加してください。