MellowtelをクロスプラットフォームのElectronアプリケーションに統合して、ユーザーが未使用のインターネット帯域幅を共有し、報酬やプレミアム機能を得られるようにしましょう。Electron SDKは、Electronが動作するすべての場所(macOS、Windows、Linux)で動作します。Documentation Index
Fetch the complete documentation index at: https://docs.mellowtel.com/llms.txt
Use this file to discover all available pages before exploring further.
前提条件
- Mellowtelアカウントと設定キー(ダッシュボードから取得)。
- メインプロセスにアクセスできるElectronアプリケーション。
インストール
1. npm認証を設定する
プロジェクトのルートディレクトリに.npmrcファイルを作成し、npmをMellowtel GitHub Packagesレジストリに向け、インストールを認証します。
YOUR_NPM_TOKENを以下のインストールトークンに置き換えます。クリックして表示し、コードブロックのコピーアイコンを使ってクリップボードにコピーしてください。
インストールトークンを表示
インストールトークンを表示
2. パッケージをインストールする
プロジェクトのルートから、Electron SDKをインストールします。3. コードに追加する
Electronのメインプロセスファイル(通常はmain.tsまたはmain.js)でSDKをインポートし、設定キーでインスタンス化し、ユーザーから同意を求め、init()を呼び出してサービスを開始します。
YOUR_CONFIGURATION_KEYをMellowtelダッシュボードからのキーに置き換えてください。new Mellowtel(configurationKey, options?)はSDKをインスタンス化します。現在利用可能な唯一のオプションはdisableLogsで、デフォルトはtrueです。統合中はこれをfalseに設定して、ターミナルで接続状態とリクエスト活動を確認できます。requestConsent(window, incentive)は、渡されたBrowserWindowにアンカーされたネイティブのElectronメッセージボックスを表示します。第2引数はダイアログの目立つ見出し(例:“3ヶ月間無料”)で、Mellowtelが何をするかの固定説明の上に表示されます。ユーザーが受け入れるとtrue、拒否またはダイアログを閉じるとfalse、同意がすでにある場合はundefinedを返します。SDKはオプトインの決定を自動的に保持するため、その後にoptIn()を呼び出す必要はありません。init()はconfigurationKeyが空の場合のみスローします。ユーザーがオプトインしていない場合、ログを記録して静かにリターンします。それ以外の場合は、MellowtelのバックエンドにWebSocketを開きます。この呼び出しはレンダラーUIに対して非ブロッキングであり、接続が確立される間もウィンドウは応答性を保ちます。
システムダイアログの中断を防ぐ(推奨)
SDKには、システムダイアログ(オートフィルポップアップ、翻訳バー、NTLM / Kerberos認証プロンプト、パスワードマネージャーの統合、メディアオーバーレイ、初回起動ダイアログ)を抑制するためにElectronコマンドラインフラグを設定するオプションのヘルパーsetupMellowtelApp()が付属しています。
メインプロセスファイルの先頭で、app.whenReady()の前にこれを呼び出し、@mellowtel-inc/mellowtel-electronからのデフォルトエクスポートと共にインポートします。正規の使用法については、上流のREADMEを参照してください。
ユーザーの同意
同意を処理するための2つの方法があります:- 組み込みのネイティブダイアログを使用する
requestConsent(window, incentive)を介して。これは最速の方法で、上記のスニペットが示しています。ネイティブのElectrondialog.showMessageBoxをレンダリングし、インセンティブのコピーを見出しとして使用し、ユーザーの決定を自動的に保持します。 - 独自の同意UIを構築する
optIn(),optOut(),getOptInStatus()を介してSDKを操作します。ネイティブダイアログが提供するものを超えたカスタムブランディング、より豊かな説明、ローカリゼーションが必要な場合に使用します。
同意ダイアログに含めるべき内容
Mellowtelが何をするか説明する
簡潔な言葉を使いましょう。例:“このアプリはMellowtelを使用して未使用のインターネット帯域幅を共有します。その見返りとして、[利益/機能]を得ることができます。設定でいつでもオプトアウトできます。”
ポリシーへのリンクを提供する
利用規約とプライバシーポリシーへのリンクを含めましょう。
ユーザーが後で同意を変更できるようにする
MellowtelはshowConsentSettings(window)を介して組み込みの設定ダイアログを提供します。これは現在の状態に一致するオプトイン/オプトアウトボタンを備えたネイティブダイアログをレンダリングし、ユーザーが選択を切り替えるときに内部でoptIn()またはoptOut()(およびオプトイン時にWebSocketを再接続)を呼び出します。ユーザーが選択を再訪できるように、アプリのメニュー項目や設定ボタンに接続してください。
独自の設定画面を構築することを好む場合は、getOptInStatus()を呼び出して現在の状態を読み取り、optIn() / optOut()を呼び出して変更します。
メソッドリファレンス
Mellowtelクラスは以下のパブリックメソッドを公開します。すべてはnew Mellowtel(configurationKey, options?)で作成したインスタンスで利用可能です。
ライフサイクル
init(): Promise<void>は、ユーザーがオプトインしている場合にサービスを開始し、そうでない場合は静かに早期リターンします。設定キーが空の場合のみスローします。requestConsent(window: BrowserWindow, incentive: string): Promise<boolean | undefined>は組み込みのネイティブ同意ダイアログを表示し、結果を保持します。承諾でtrue、拒否または閉じるでfalse、すでに同意がある場合はundefinedを返します。showConsentSettings(window: BrowserWindow): Promise<void>は組み込みの管理同意ダイアログを表示します。ユーザーが選択を切り替えるときにSDKは内部でオプトイン/オプトアウトの移行を処理します。
optIn(): Promise<void>はダイアログを表示せずにユーザーをオプトインとしてフラグします。独自のUIを通じて同意を収集した後にのみこれを使用してください。optOut(): Promise<void>はユーザーをオプトアウトとしてフラグし、アクティブなWebSocket接続を閉じます。getOptInStatus(): boolean | undefinedは現在のオプトイン状態を返し、ユーザーが選択をしたことがない場合はundefinedを返します。getNodeId(): stringはこのインストールのMellowtelノード識別子を返します。サポートチケットを提出する際に便利です。
electron-storeを通じてローカルに保存され、アプリの再起動後も持続します。オプトインの影響をユーザーに示したい場合は、独自のUIで表示してください。
getTotalRequestCount(): numberはインストール以来処理された総リクエスト数を返します。getDailyRequestCount(): numberは今日処理されたリクエスト数を返します。getRequestCountForDate(date: string): numberは特定の日付YYYY-MM-DDのカウントを返します。getDailyRequestsHistory(): { [date: string]: number }は毎日のカウントをマップとして返します。getRequestCountsInRange(startDate: string, endDate: string): { [date: string]: number }は日付範囲のカウントを返します。getRequestCounts(): { total: number; daily: number; dailyHistory: { [date: string]: number } }は3つのカウンターすべてを1回の呼び出しで返します。
シャットダウンとライフサイクル
Electron SDKは独自のbefore-quitまたはwill-quitハンドラーを登録しません。Electronプロセスが終了すると、バックグラウンドのWebSocket接続もそれに伴って終了し、明示的なクリーンアップは必要ありません。
セッション中にMellowtelを切断したい場合(例えば、アプリで「一時停止」設定を切り替えるとき)、optOut()を呼び出してください。これによりオプトインフラグがクリアされ、アクティブな接続が閉じられます。再接続するには、optIn()を呼び出した後にinit()を呼び出します。
同意の持続
オプトイン状態はプラットフォームデフォルトのelectron-store設定パスに保存されます:
- macOS:
~/Library/Application Support/<YourAppName>/config.json - Windows:
%APPDATA%\<YourAppName>\config.json - Linux:
~/.config/<YourAppName>/config.json
トラブルシューティング
"パッケージが見つかりません"エラーがインストール中に発生
"パッケージが見つかりません"エラーがインストール中に発生
.npmrcがpackage.jsonの隣にプロジェクトルートにあることを確認してください。- トークンに前後の空白がないことを確認してください。
- npmキャッシュをクリアし、
npm cache clean --forceを実行した後にnpm installを再試行してください。
"Unauthorized"または401がインストール中に発生
"Unauthorized"または401がインストール中に発生
同意ダイアログが表示されない
同意ダイアログが表示されない
app.whenReady()が解決された後、かつ有効で破棄されていないBrowserWindow参照でrequestConsentを呼び出すことを確認してください。setupMellowtelApp()を使用する場合は、app.whenReady()の前に呼び出されていることを確認してください。
"init()がエラーなしで実行されるが何も起こらない"
"init()がエラーなしで実行されるが何も起こらない"
これは設計によるものです。
init()はユーザーがオプトインしていない場合に静かに早期リターンします。getOptInStatus()を確認してください。undefinedまたはfalseを返す場合は、まずrequestConsentを実行してください。内部の「ユーザーがオプトインしていない」ログは、disableLogsがデフォルトのままの場合に抑制されるため(以下の「ログが静か」を参照)、ターミナルはこのフラグを反転させるまでどちらの信号も与えません。ログが静か
ログが静か
disableLogsコンストラクタオプションはデフォルトでtrueです。統合中は、接続状態とリクエスト活動をターミナルに表示するために、コンストラクタの第2引数として{ disableLogs: false }を渡してください。これは「オプトインしていない」静かなノーオペレーション(上記参照)と実際の接続失敗を区別する最速の方法でもあります。完了までの推定時間: 10-15分。 ヘルプが必要な場合やフィードバックがある場合は、info@mellowtel.comまでご連絡いただくか、Discordコミュニティに参加してください。