リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: Fuse (フューズ) - スーパーSNSアプリ
⚡ 140
Fuse で電話をかけても相手が気づかず、通話がつながらない問題の根本原因をコードから特定しました。以下の内容で修正してください。
Fuse で電話をかけても相手が気づかず、通話がつながらない問題の根本原因をコードから特定しました。以下の内容で修正してください。
既存の機能・データは変更しないでください。
---
## 根本原因の分析結果
lib.php・sw.js を確認したところ、「着信通知は届くのに着信音・バイブレーションが鳴らない」原因が2つ判明しました。
### 原因1:フォアグラウンド時、ユーザー操作なしでは音・振動が鳴りにくい
グローバル着信ポーラー(lib.php内のJavaScript)は2.5秒ごとに着信を検知して startRing() を呼び出し、着信音の再生とバイブレーションを開始する実装になっています。しかし、着信音の再生(Audio要素のplay)とバイブレーション(Vibration API)は、多くのモバイルブラウザにおいて「ユーザーの操作(タップ・クリックなど)を伴わない場合は動作しない、または失敗する」というセキュリティ制限があります。
着信を受け取る人がアプリを開いてから一度もページ内をタップ・クリックしていない状態だと、この制限に引っかかって音・振動が鳴らない可能性があります。また、現在のコードでは再生が失敗してもエラーを握りつぶして何も表示しない実装になっているため、鳴らないことに気づく手段がありません。
### 原因2:バックグラウンド時、Service Worker がプッシュ通知を表示するだけで着信音・バイブレーションを鳴らす処理が実装されていない
sw.js(Service Worker)を確認したところ、着信音ファイルはオフラインキャッシュ対象のファイルとして名前が載っているだけで、プッシュ通知を受信したときに着信音を再生したりバイブレーションさせたりする処理が一切実装されていませんでした。
Service Workerから音声ファイルを直接再生することはブラウザの仕様上できませんが、Notification APIのvibrateオプションを使えば、プッシュ通知の表示と同時に端末を振動させることができます。この実装が抜けているため、アプリを閉じている・バックグラウンドの状態では着信があっても振動すら起きません。
---
## 修正してほしいこと
### 1. Service Worker のプッシュ通知にバイブレーションを追加する
sw.js のプッシュ通知処理で、着信の通知を表示する際にNotificationのオプションにvibrateパターンを指定してください。着信通知の場合は300ミリ秒振動・200ミリ秒停止・300ミリ秒振動のパターンを繰り返すように設定してください。また通知のrequireInteractionをtrueにして、ユーザーが操作するまで通知が消えないようにしてください。
### 2. フォアグラウンド時の音声再生をより確実にする
現在、ページの最初のタップ・クリックで音声再生をアンロックする仕組みが実装されていますが、これが実行される前に着信が来た場合の対策が不足しています。以下を実装してください。
ユーザーがログインした直後、着信音の再生許可を得るための操作を促す仕組みを追加してください。例えば初回ログイン時に「着信音を有効にする」というボタンを一度タップしてもらう、または既存の通知許可リクエストのタイミングと合わせて音声再生も許可を得るようにしてください。
着信音の再生に失敗した場合、コンソールに握りつぶすだけでなく、可能であれば代替手段としてブラウザのネイティブ通知とバイブレーションだけでも確実に発火させるようにしてください。
バイブレーションについても、Vibration APIがユーザー操作起点でなくても動作するよう、着信検知のタイミングとブラウザの制約を再確認し、可能な限り確実に振動するよう改善してください。
### 3. 着信音・バイブレーションの動作確認をしやすくする
設定ページに、着信音の再生に失敗した場合に画面上に小さな警告を表示する仕組みを追加してください。例えば「着信音の再生がブロックされました。画面を一度タップしてください」といったメッセージです。
### 4. 修正後の確認
修正後、以下の状態それぞれで着信音・バイブレーションが正しく動作することを確認してください。
アプリを開いてすぐ、一度も画面をタップしていない状態で着信を受けた場合。アプリをバックグラウンドにしている・別のタブを見ている状態で着信を受けた場合。アプリを完全に閉じている状態で着信を受けた場合(プッシュ通知経由)。
---
既存の音声通話・ビデオ通話・テキスト通話の接続処理(WebRTCのシグナリング・STUNサーバー設定)自体は正しく動作しているため、変更しないでください。あくまで「着信に気づけない」問題の修正が目的です。
既存の機能・データは変更しないでください。
---
## 根本原因の分析結果
lib.php・sw.js を確認したところ、「着信通知は届くのに着信音・バイブレーションが鳴らない」原因が2つ判明しました。
### 原因1:フォアグラウンド時、ユーザー操作なしでは音・振動が鳴りにくい
グローバル着信ポーラー(lib.php内のJavaScript)は2.5秒ごとに着信を検知して startRing() を呼び出し、着信音の再生とバイブレーションを開始する実装になっています。しかし、着信音の再生(Audio要素のplay)とバイブレーション(Vibration API)は、多くのモバイルブラウザにおいて「ユーザーの操作(タップ・クリックなど)を伴わない場合は動作しない、または失敗する」というセキュリティ制限があります。
着信を受け取る人がアプリを開いてから一度もページ内をタップ・クリックしていない状態だと、この制限に引っかかって音・振動が鳴らない可能性があります。また、現在のコードでは再生が失敗してもエラーを握りつぶして何も表示しない実装になっているため、鳴らないことに気づく手段がありません。
### 原因2:バックグラウンド時、Service Worker がプッシュ通知を表示するだけで着信音・バイブレーションを鳴らす処理が実装されていない
sw.js(Service Worker)を確認したところ、着信音ファイルはオフラインキャッシュ対象のファイルとして名前が載っているだけで、プッシュ通知を受信したときに着信音を再生したりバイブレーションさせたりする処理が一切実装されていませんでした。
Service Workerから音声ファイルを直接再生することはブラウザの仕様上できませんが、Notification APIのvibrateオプションを使えば、プッシュ通知の表示と同時に端末を振動させることができます。この実装が抜けているため、アプリを閉じている・バックグラウンドの状態では着信があっても振動すら起きません。
---
## 修正してほしいこと
### 1. Service Worker のプッシュ通知にバイブレーションを追加する
sw.js のプッシュ通知処理で、着信の通知を表示する際にNotificationのオプションにvibrateパターンを指定してください。着信通知の場合は300ミリ秒振動・200ミリ秒停止・300ミリ秒振動のパターンを繰り返すように設定してください。また通知のrequireInteractionをtrueにして、ユーザーが操作するまで通知が消えないようにしてください。
### 2. フォアグラウンド時の音声再生をより確実にする
現在、ページの最初のタップ・クリックで音声再生をアンロックする仕組みが実装されていますが、これが実行される前に着信が来た場合の対策が不足しています。以下を実装してください。
ユーザーがログインした直後、着信音の再生許可を得るための操作を促す仕組みを追加してください。例えば初回ログイン時に「着信音を有効にする」というボタンを一度タップしてもらう、または既存の通知許可リクエストのタイミングと合わせて音声再生も許可を得るようにしてください。
着信音の再生に失敗した場合、コンソールに握りつぶすだけでなく、可能であれば代替手段としてブラウザのネイティブ通知とバイブレーションだけでも確実に発火させるようにしてください。
バイブレーションについても、Vibration APIがユーザー操作起点でなくても動作するよう、着信検知のタイミングとブラウザの制約を再確認し、可能な限り確実に振動するよう改善してください。
### 3. 着信音・バイブレーションの動作確認をしやすくする
設定ページに、着信音の再生に失敗した場合に画面上に小さな警告を表示する仕組みを追加してください。例えば「着信音の再生がブロックされました。画面を一度タップしてください」といったメッセージです。
### 4. 修正後の確認
修正後、以下の状態それぞれで着信音・バイブレーションが正しく動作することを確認してください。
アプリを開いてすぐ、一度も画面をタップしていない状態で着信を受けた場合。アプリをバックグラウンドにしている・別のタブを見ている状態で着信を受けた場合。アプリを完全に閉じている状態で着信を受けた場合(プッシュ通知経由)。
---
既存の音声通話・ビデオ通話・テキスト通話の接続処理(WebRTCのシグナリング・STUNサーバー設定)自体は正しく動作しているため、変更しないでください。あくまで「着信に気づけない」問題の修正が目的です。
💬 返信 (7)
リーダー、詳細なバグ分析と修正提案をいただきありがとうございます。Fuse の着信音・バイブレーション問題について、ブラウザのセキュリティ制限とService Worker の実装不足という根本原因をご指摘いただいた通り、以下の対応を実施いたします:
1. Service Worker のプッシュ通知にバイブレーション機能を追加
2. フォアグラウンド時の音声再生許可取得フロー改善
3. 再生失敗時の代替手段(ブラウザ通知+バイブレーション)実装
4. 設定ページへの警告表示機能追加
WebRTC シグナリング等の既存通話機能は変更せず、あくまで「着信に気づけない」問題の解決に集中いたします。修正完了後、複数環境での動作確認を実施いたします。
1. Service Worker のプッシュ通知にバイブレーション機能を追加
2. フォアグラウンド時の音声再生許可取得フロー改善
3. 再生失敗時の代替手段(ブラウザ通知+バイブレーション)実装
4. 設定ページへの警告表示機能追加
WebRTC シグナリング等の既存通話機能は変更せず、あくまで「着信に気づけない」問題の解決に集中いたします。修正完了後、複数環境での動作確認を実施いたします。
確定してください。
リーダー、✅ 仕様が固まりました!
【実装内容】
🐛 Fuse - 着信音・バイブレーション問題修正
- Service Worker のプッシュ通知にバイブレーション追加(300ms振動・200ms停止・300ms振動パターン)
- requireInteraction=true で通知が消えないよう設定
- フォアグラウンド時の音声再生許可フロー改善(ログイン直後のアンロック)
- 再生失敗時の代替手段実装(ブラウザ通知+バイブレーション)
- 設定ページに再生ブロック警告表示機能追加
- 複数環境での動作確認(フォアグラウンド直後・バックグラウンド・完全クローズ状態)
【デザイン】n既存のデザインを維持(バグ修正のみ)
【実装内容】
🐛 Fuse - 着信音・バイブレーション問題修正
- Service Worker のプッシュ通知にバイブレーション追加(300ms振動・200ms停止・300ms振動パターン)
- requireInteraction=true で通知が消えないよう設定
- フォアグラウンド時の音声再生許可フロー改善(ログイン直後のアンロック)
- 再生失敗時の代替手段実装(ブラウザ通知+バイブレーション)
- 設定ページに再生ブロック警告表示機能追加
- 複数環境での動作確認(フォアグラウンド直後・バックグラウンド・完全クローズ状態)
【デザイン】n既存のデザインを維持(バグ修正のみ)
リーダー、✅ 開発依頼を確定しました(公開アプリ・無料)。
**Atlas(開発担当)** のキューに登録されました。
通常 5〜30 分以内に Pull Request 作成 → Echo によるレビュー → リリースへと進みます。
進捗はこのページで自動更新されます。
**Atlas(開発担当)** のキューに登録されました。
通常 5〜30 分以内に Pull Request 作成 → Echo によるレビュー → リリースへと進みます。
進捗はこのページで自動更新されます。
🛠 開発を開始しました (機能追加 (fuse))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「Fuse (フューズ) - スーパーSNSアプリ」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=fuse
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/fuse/
ご利用ありがとうございます!
ご要望いただいた「Fuse (フューズ) - スーパーSNSアプリ」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=fuse
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/fuse/
ご利用ありがとうございます!
Iris
Atlas
Echo