しくみ
このページでは、メディア検出から Discord 表示までの流れと、外部へ送信されるデータを説明します。
【デスクトップ版 (Windows)】 WSA 内アプリ ──(ADB / 127.0.0.1:58526)──▶ WSA RPC Bridge ──IPC──▶ Discord クライアント 5秒ごとに dumpsys を取得 │ └─ アプリ名解決 (APK取得+キャッシュ) サムネイル解決 (対応アプリのみ)
【Android 版】 音楽アプリの MediaSession ──▶ NotificationListenerService ──JNI▶ Rust ──Discord Social SDK──▶ Discord アプリ (通知アクセス権限) 端末内で完結、イベント駆動デスクトップ版 (WSA)
Section titled “デスクトップ版 (WSA)”- ADB 接続 — ローカルホストの ADB サーバー (
127.0.0.1:5037) に接続し、WSA の開発者モードが公開する127.0.0.1:58526をターゲットにします。通信は同一 PC 内のみです - メディア情報の取得 — 5 秒ごとに
adb shell dumpsys media_sessionを実行し、アクティブなセッションから曲名・アーティスト・再生状態・再生位置を解析します - アプリ名の解決 — 再生中アプリの表示名は、APK を ADB で引き取って解析し、
%LOCALAPPDATA%\wsa-rpc-bridge\ApkCacheにキャッシュします - Discord へ送信 — 検出内容に変化があったときだけ、ログイン済み Discord クライアントの IPC に接続して Rich Presence を更新します
Android 版
Section titled “Android 版”- メディアセッションの監視 — 通知アクセス権限 (
NotificationListenerService) を使ってMediaSessionManagerのアクティブセッションを取得します。ホワイトリスト登録済みアプリのみを対象とし、再生中のセッションを優先します - 端末内での処理 — 取得した情報は JNI 経由で Rust 側へ渡され、UI へはイベント配信されます (通常はイベント駆動で、30 秒間隔の保険ポーリングを併用)
- 常駐 — フォアグラウンドサービス (種別
mediaPlayback) がプロセスを維持します。設定で常駐通知の ON/OFF が可能です - Discord へ送信 — Discord Social SDK (同梱ライブラリー) で端末上の Discord アプリに直接接続し、Rich Presence を更新します。本アプリで Discord にログインする必要はありません
Discord に送られるデータ
Section titled “Discord に送られるデータ”Rich Presence を有効にしている場合のみ、以下が送信されます。
| 項目 | 内容 |
|---|---|
| 曲タイトル | タイトル行として表示 |
| アーティスト名 | サムネイル画像のキャプションとして表示 |
| 再生アプリ名 | プレイヤー名として表示 |
| 再生位置・再生時間 | 進行バー (タイムスタンプ) として表示 |
| サムネイル画像 URL | 対応アプリのみ (後述) |
- アルバム名は検出しますが、Discord には送信されません (重複判定と常駐通知の表示にのみ使用)
- 表示内容は Discord の仕様に従い、フレンドなど他のユーザーからも見える場合があります
サムネイル画像の解決
Section titled “サムネイル画像の解決”対応アプリのプラグイン構造 (ArtworkResolver) により、再生中のアプリに応じてサムネイル URL を解決します。
- 現在の対応:
- ボカコレ (
jp.nicovideo.nicobox) — 曲タイトルをニコニコの検索 API に送信し、一致する動画のサムネイル URL を取得 - YouTube / YouTube Music 系 (
com.google.android.youtube、com.google.android.apps.youtube.music、app.morphe.android.youtube、app.morphe.android.apps.youtube.music) — タイトルとアーティスト名をもとにした検索クエリを YouTube の検索 API (www.youtube.com/youtubei/v1/search) に送信し、一致する動画のサムネイル URL (i.ytimg.com) を取得
- ボカコレ (
- 画像本体はダウンロード・保存せず、URL のみを一時保持して Discord へ渡します
- この通信は対応アプリの再生中にのみ発生し、詳細は プライバシーポリシー に記載しています
ローカルに保存されるデータ
Section titled “ローカルに保存されるデータ”| データ | Windows | Android |
|---|---|---|
| 設定 | %APPDATA%\wsa-rpc-bridge\config.json |
内部ストレージ |
| ホワイトリスト | ― (機能なし・全セッション対象) | 内部ストレージ |
| APK 名解決キャッシュ | %LOCALAPPDATA%\wsa-rpc-bridge\ApkCache |
― |
| 動作ログ | %LOCALAPPDATA%\com.wsarpcbridge.app\logs (rust.log / webview.log) |
アプリ内部ストレージ (files/logs) |
テレメトリ・クラッシュレポートの自動送信・広告は存在しません。