Fix browser phone connection and audio issues on Android tablets
All checks were successful
Create Release / build (push) Successful in 6s
All checks were successful
Create Release / build (push) Successful in 6s
Resolves issues where browser phone PWA failed to connect and calls would immediately hang up when answered on Android tablets. Adds proper mobile audio handling, device connection monitoring, and PWA notifications for incoming calls. Key changes: - Add AudioContext initialization with mobile unlock for autoplay support - Add Android-specific WebRTC constraints (echo cancellation, ICE restart) - Add device connection state monitoring and auto-reconnection - Add incoming call ringtone with vibration fallback - Add PWA service worker notifications for background calls - Add Page Visibility API for background call detection - Improve call answer handler with connection state validation - Add touch event support for mobile dialpad 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
42
assets/images/README.md
Normal file
42
assets/images/README.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Browser Phone Images
|
||||
|
||||
## Required Images for PWA Notifications
|
||||
|
||||
Place the following image files in this directory for browser push notifications:
|
||||
|
||||
### phone-icon.png
|
||||
- **Purpose**: Main notification icon
|
||||
- **Size**: 192x192 pixels (recommended)
|
||||
- **Format**: PNG with transparency
|
||||
- **Usage**: Shown in browser notifications for incoming calls
|
||||
|
||||
### phone-badge.png
|
||||
- **Purpose**: Small badge icon for notifications
|
||||
- **Size**: 96x96 pixels or 72x72 pixels
|
||||
- **Format**: PNG with transparency
|
||||
- **Usage**: Displayed in the notification badge area (Android)
|
||||
|
||||
## Fallback Behavior
|
||||
|
||||
If these images are not present, the browser will:
|
||||
- Use a default browser notification icon
|
||||
- Still display text-based notifications
|
||||
- Functionality will not be affected
|
||||
|
||||
## Image Creation Tips
|
||||
|
||||
- Use a simple, recognizable phone icon
|
||||
- Ensure good contrast for visibility
|
||||
- Test on both light and dark backgrounds
|
||||
- Transparent backgrounds work best
|
||||
- Use a consistent color scheme with your brand
|
||||
|
||||
## Example Resources
|
||||
|
||||
- Google Material Icons: https://fonts.google.com/icons
|
||||
- Font Awesome: https://fontawesome.com/
|
||||
- Flaticon: https://www.flaticon.com/
|
||||
- Or create custom icons using tools like:
|
||||
- Figma
|
||||
- Adobe Illustrator
|
||||
- Inkscape (free)
|
||||
@@ -72,7 +72,23 @@ self.addEventListener('push', function(event) {
|
||||
|
||||
// Handle messages from the main script
|
||||
self.addEventListener('message', function(event) {
|
||||
console.log('TWP Service Worker: Message received', event.data);
|
||||
|
||||
if (event.data && event.data.type === 'SHOW_NOTIFICATION') {
|
||||
self.registration.showNotification(event.data.title, event.data.options);
|
||||
const options = {
|
||||
body: event.data.body || 'You have a new call waiting',
|
||||
icon: event.data.icon || '/wp-content/plugins/twilio-wp-plugin/assets/images/phone-icon.png',
|
||||
badge: '/wp-content/plugins/twilio-wp-plugin/assets/images/phone-badge.png',
|
||||
vibrate: [300, 200, 300, 200, 300],
|
||||
tag: event.data.tag || 'incoming-call',
|
||||
requireInteraction: event.data.requireInteraction !== undefined ? event.data.requireInteraction : true,
|
||||
data: event.data.data || {}
|
||||
};
|
||||
|
||||
console.log('TWP Service Worker: Showing notification', event.data.title, options);
|
||||
|
||||
event.waitUntil(
|
||||
self.registration.showNotification(event.data.title || 'Incoming Call', options)
|
||||
);
|
||||
}
|
||||
});
|
||||
36
assets/sounds/README.md
Normal file
36
assets/sounds/README.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# Ringtone Audio Files
|
||||
|
||||
## Custom Ringtone
|
||||
|
||||
To add a custom ringtone for incoming calls in the browser phone:
|
||||
|
||||
1. Place your ringtone audio file in this directory
|
||||
2. Name it: `ringtone.mp3`
|
||||
3. Recommended format: MP3, under 5 seconds, loopable
|
||||
|
||||
## Fallback Behavior
|
||||
|
||||
If no ringtone file is present, the browser phone will:
|
||||
- Use device vibration on mobile devices (Android, iOS)
|
||||
- Rely on browser notifications to alert users
|
||||
- Display visual indicators in the browser interface
|
||||
|
||||
## Supported Audio Formats
|
||||
|
||||
- **MP3** (recommended) - Best compatibility across browsers
|
||||
- **OGG** - Good for Firefox, Chrome
|
||||
- **WAV** - Larger file size but universal support
|
||||
|
||||
## File Requirements
|
||||
|
||||
- Maximum file size: 100KB recommended
|
||||
- Duration: 1-5 seconds (will loop)
|
||||
- Sample rate: 44.1kHz or 48kHz
|
||||
- Bitrate: 128kbps or higher
|
||||
|
||||
## Example Ringtone Sources
|
||||
|
||||
You can find free ringtone files at:
|
||||
- https://freesound.org/
|
||||
- https://incompetech.com/
|
||||
- Or create your own using Audacity or similar tools
|
||||
Reference in New Issue
Block a user