83 lines
2.0 KiB
Markdown
83 lines
2.0 KiB
Markdown
# Server API Example
|
|
|
|
Your server should provide an API endpoint that returns audio track information. Here's what the app expects:
|
|
|
|
## Endpoint: GET /api/tracks
|
|
|
|
Returns a JSON array of audio tracks with their streaming URLs.
|
|
|
|
### Response Format:
|
|
|
|
```json
|
|
{
|
|
"tracks": [
|
|
{
|
|
"id": "unique-track-id-1",
|
|
"title": "Song Title",
|
|
"artist": "Artist Name",
|
|
"album": "Album Name",
|
|
"duration": 180,
|
|
"streamURL": "http://your-server.com/audio/track1.mp3",
|
|
"artworkURL": "http://your-server.com/artwork/track1.jpg"
|
|
},
|
|
{
|
|
"id": "unique-track-id-2",
|
|
"title": "Another Song",
|
|
"artist": "Another Artist",
|
|
"album": "Another Album",
|
|
"duration": 240,
|
|
"streamURL": "http://your-server.com/audio/track2.mp3",
|
|
"artworkURL": "http://your-server.com/artwork/track2.jpg"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Field Descriptions:
|
|
|
|
- `id`: Unique identifier for the track
|
|
- `title`: Track title
|
|
- `artist`: Artist name
|
|
- `album`: Album name (optional)
|
|
- `duration`: Track duration in seconds
|
|
- `streamURL`: Direct URL to the audio file (mp3, m4a, etc.)
|
|
- `artworkURL`: URL to album artwork image (optional)
|
|
|
|
## Audio File Requirements:
|
|
|
|
- Supported formats: MP3, M4A, AAC, WAV
|
|
- Files should be accessible via HTTP/HTTPS
|
|
- Consider using HTTP range requests for better streaming performance
|
|
- HTTPS recommended for production
|
|
|
|
## Example Server Implementation (Node.js/Express):
|
|
|
|
```javascript
|
|
app.get('/api/tracks', (req, res) => {
|
|
const tracks = [
|
|
{
|
|
id: '1',
|
|
title: 'My Song',
|
|
artist: 'My Artist',
|
|
album: 'My Album',
|
|
duration: 180,
|
|
streamURL: 'http://localhost:3000/audio/song1.mp3',
|
|
artworkURL: 'http://localhost:3000/artwork/song1.jpg'
|
|
}
|
|
];
|
|
|
|
res.json({ tracks });
|
|
});
|
|
|
|
app.use('/audio', express.static('path/to/audio/files'));
|
|
app.use('/artwork', express.static('path/to/artwork/files'));
|
|
```
|
|
|
|
## Configuration:
|
|
|
|
Update the `baseURL` in `CarPlayAudioApp/Services/AudioService.swift`:
|
|
|
|
```swift
|
|
private let baseURL = "http://your-server.com/api"
|
|
```
|