Initial Commit
This commit is contained in:
@@ -0,0 +1,308 @@
|
||||
# Troubleshooting: Players/Library Not Loading
|
||||
|
||||
## Symptom
|
||||
|
||||
After successful login, the Players and Library tabs show:
|
||||
- Loading spinner forever
|
||||
- "No Players Found"
|
||||
- "Error Loading Players"
|
||||
- Empty lists
|
||||
|
||||
## Debugging Steps
|
||||
|
||||
### 1. Check Connection Info
|
||||
|
||||
**In the app:**
|
||||
1. Go to **Players** tab
|
||||
2. Tap **Info icon** (ℹ️) in toolbar
|
||||
3. Check:
|
||||
- ✅ Server URL is correct
|
||||
- ✅ "Connected" shows "Yes"
|
||||
- ✅ "WebSocket" shows "Connected"
|
||||
- ✅ "Status" shows "Authenticated"
|
||||
|
||||
### 2. Check Console Logs
|
||||
|
||||
**In Xcode:**
|
||||
1. Run the app with console open (⌘+Shift+Y)
|
||||
2. Look for these log messages:
|
||||
|
||||
**Good signs:**
|
||||
```
|
||||
🔵 PlayerListView: Starting to load players...
|
||||
🔵 MAService.getPlayers: Sending 'players' command
|
||||
✅ MAService.getPlayers: Received 3 players
|
||||
✅ PlayerListView: Successfully loaded 3 players
|
||||
```
|
||||
|
||||
**Bad signs:**
|
||||
```
|
||||
❌ MAService.getPlayers: Error - notConnected
|
||||
❌ PlayerListView: Failed to load players: Not connected to server
|
||||
```
|
||||
|
||||
**Or:**
|
||||
```
|
||||
❌ WebSocket receive error: The operation couldn't be completed
|
||||
❌ Failed to decode response
|
||||
```
|
||||
|
||||
### 3. Common Causes & Solutions
|
||||
|
||||
#### Cause A: WebSocket Not Connected
|
||||
|
||||
**Symptoms:**
|
||||
- Console shows: "Not connected to server"
|
||||
- Connection Info shows: WebSocket = "Disconnected"
|
||||
|
||||
**Solution:**
|
||||
```swift
|
||||
// Check if WebSocket endpoint is reachable
|
||||
// For reverse proxy users:
|
||||
wss://musicassistant-app.hanold.online/ws
|
||||
|
||||
// Test in terminal:
|
||||
websocat wss://musicassistant-app.hanold.online/ws
|
||||
```
|
||||
|
||||
**Reverse Proxy Fix:**
|
||||
Ensure nginx has WebSocket support:
|
||||
```nginx
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
```
|
||||
|
||||
#### Cause B: API Endpoint Wrong
|
||||
|
||||
**Symptoms:**
|
||||
- Login works but nothing else loads
|
||||
- Console shows: "Invalid URL" or "404"
|
||||
|
||||
**Solution:**
|
||||
Check server URL format:
|
||||
- ✅ `https://musicassistant-app.hanold.online` (no port if using reverse proxy)
|
||||
- ✅ `http://192.168.1.100:8095` (with port if direct)
|
||||
- ❌ `https://musicassistant-app.hanold.online:8095` (wrong if using reverse proxy on 443)
|
||||
|
||||
#### Cause C: Token Invalid
|
||||
|
||||
**Symptoms:**
|
||||
- Login succeeds but API calls fail
|
||||
- Console shows: "401 Unauthorized"
|
||||
|
||||
**Solution:**
|
||||
1. Generate new long-lived token
|
||||
2. In app: Settings → Disconnect
|
||||
3. Login again with new token
|
||||
|
||||
#### Cause D: Music Assistant Commands Changed
|
||||
|
||||
**Symptoms:**
|
||||
- "Command not found" errors
|
||||
- Decoding errors
|
||||
|
||||
**Solution:**
|
||||
- Update Music Assistant server to latest version
|
||||
- Check API compatibility (Server v2.7+ required)
|
||||
|
||||
#### Cause E: CORS or Security Issues
|
||||
|
||||
**Symptoms:**
|
||||
- WebSocket connects but commands fail
|
||||
- Mixed content warnings
|
||||
|
||||
**Solution:**
|
||||
- Ensure reverse proxy allows WebSocket
|
||||
- Check HTTPS is properly configured
|
||||
- Verify no CORS blocking
|
||||
|
||||
### 4. Test WebSocket Directly
|
||||
|
||||
**Terminal test:**
|
||||
```bash
|
||||
# Install websocat
|
||||
brew install websocat
|
||||
|
||||
# Test WebSocket connection
|
||||
websocat wss://musicassistant-app.hanold.online/ws
|
||||
|
||||
# Should see connection open
|
||||
# Press Ctrl+C to close
|
||||
```
|
||||
|
||||
**With authentication:**
|
||||
```bash
|
||||
# You'll need to send auth first
|
||||
# This is complex - use app debugging instead
|
||||
```
|
||||
|
||||
### 5. Test API Endpoints
|
||||
|
||||
**Test REST API:**
|
||||
```bash
|
||||
# Get players (won't work without WebSocket but tests connectivity)
|
||||
curl -X POST https://musicassistant-app.hanold.online/api/players \
|
||||
-H "Authorization: Bearer YOUR_TOKEN" \
|
||||
-H "Content-Type: application/json"
|
||||
```
|
||||
|
||||
### 6. Enable Detailed Logging
|
||||
|
||||
The app now includes print statements for debugging.
|
||||
|
||||
**What to look for in console:**
|
||||
|
||||
**1. Connection Phase:**
|
||||
```
|
||||
[INFO] Connecting to Music Assistant
|
||||
[INFO] Connecting to wss://...
|
||||
[INFO] Connected successfully
|
||||
```
|
||||
|
||||
**2. Loading Phase:**
|
||||
```
|
||||
🔵 PlayerListView: Starting to load players...
|
||||
🔵 MAService.getPlayers: Sending 'players' command
|
||||
[DEBUG] Sending command: players (ID: ABC-123)
|
||||
```
|
||||
|
||||
**3. Response Phase:**
|
||||
```
|
||||
[DEBUG] Received event: player_updated
|
||||
✅ MAService.getPlayers: Received 3 players
|
||||
```
|
||||
|
||||
**4. Error Messages:**
|
||||
```
|
||||
❌ WebSocket receive error: ...
|
||||
❌ Failed to decode response: ...
|
||||
❌ Request timeout
|
||||
```
|
||||
|
||||
### 7. Check Music Assistant Server
|
||||
|
||||
**On the server:**
|
||||
```bash
|
||||
# Check Music Assistant is running
|
||||
systemctl status music-assistant
|
||||
|
||||
# Check logs
|
||||
journalctl -u music-assistant -f
|
||||
|
||||
# Look for:
|
||||
# - WebSocket connection attempts
|
||||
# - Authentication success/failure
|
||||
# - Command processing
|
||||
# - Errors
|
||||
```
|
||||
|
||||
**Expected in server logs:**
|
||||
```
|
||||
[INFO] WebSocket connection from 192.168.1.X
|
||||
[INFO] Client authenticated: user@example.com
|
||||
[DEBUG] Received command: players
|
||||
[DEBUG] Sent response: players (3 items)
|
||||
```
|
||||
|
||||
## Quick Fixes
|
||||
|
||||
### Fix 1: Reconnect
|
||||
|
||||
**In app:**
|
||||
1. Players tab → Info icon → **Reconnect**
|
||||
2. Or: Settings → **Disconnect** → Login again
|
||||
|
||||
### Fix 2: Clear Cache
|
||||
|
||||
**In Xcode:**
|
||||
1. Product → Clean Build Folder
|
||||
2. Delete app from simulator/device
|
||||
3. Rebuild and run
|
||||
|
||||
### Fix 3: Check WebSocket in nginx
|
||||
|
||||
**Add logging:**
|
||||
```nginx
|
||||
location /ws {
|
||||
access_log /var/log/nginx/websocket.log;
|
||||
error_log /var/log/nginx/websocket_error.log;
|
||||
|
||||
proxy_pass http://127.0.0.1:8095;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
```
|
||||
|
||||
**Check logs:**
|
||||
```bash
|
||||
tail -f /var/log/nginx/websocket_error.log
|
||||
```
|
||||
|
||||
### Fix 4: Test with Browser
|
||||
|
||||
**Open browser:**
|
||||
```
|
||||
https://musicassistant-app.hanold.online
|
||||
```
|
||||
|
||||
**If web interface works:**
|
||||
→ Problem is in iOS app
|
||||
|
||||
**If web interface doesn't work:**
|
||||
→ Problem is server/proxy configuration
|
||||
|
||||
## iOS-Specific Issues
|
||||
|
||||
### Issue: App Timeout
|
||||
|
||||
**Cause:** iOS background timeout (30 seconds)
|
||||
|
||||
**Solution:**
|
||||
Server must respond quickly. Check:
|
||||
- Music Assistant not overloaded
|
||||
- Database queries fast
|
||||
- Network latency low
|
||||
|
||||
### Issue: App Suspension
|
||||
|
||||
**Cause:** App goes to background
|
||||
|
||||
**Solution:**
|
||||
- App reconnects automatically
|
||||
- Pull to refresh when returning
|
||||
|
||||
### Issue: SSL Certificate
|
||||
|
||||
**Cause:** Self-signed certificate
|
||||
|
||||
**Solution:**
|
||||
Add ATS exception (see HTTPS-Troubleshooting.md)
|
||||
|
||||
## Still Not Working?
|
||||
|
||||
**Collect this info:**
|
||||
|
||||
1. **Server URL:** ________________
|
||||
2. **Music Assistant Version:** ________________
|
||||
3. **Reverse Proxy:** Yes/No
|
||||
4. **Console Output:** (paste logs)
|
||||
5. **Connection Info Screenshot**
|
||||
6. **Server Logs:** (paste relevant lines)
|
||||
|
||||
**Debug checklist:**
|
||||
|
||||
- [ ] Browser can access https://YOUR_SERVER
|
||||
- [ ] WebSocket test with websocat works
|
||||
- [ ] Server logs show WebSocket connections
|
||||
- [ ] Token is valid (not expired/revoked)
|
||||
- [ ] Reverse proxy has WebSocket support
|
||||
- [ ] Console shows "Connected successfully"
|
||||
- [ ] Music Assistant has configured players
|
||||
- [ ] Network connectivity is good
|
||||
|
||||
**If all checks pass but still fails:**
|
||||
→ Likely a bug in the app or API incompatibility
|
||||
→ Check Music Assistant version is 2.7+
|
||||
→ Try with official Music Assistant mobile app to compare
|
||||
Reference in New Issue
Block a user