Skip to content
This repository was archived by the owner on Dec 24, 2025. It is now read-only.

Commit b633b91

Browse files
committed
fixed mediasession thumbnail on IOS
1 parent 8c77082 commit b633b91

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

src/player/hooks/player-media.ts

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,48 @@ import { useCurrentTrack } from '@/player/stores/current-track'
66
export const usePlayerMedia = createSharedComposable(() => {
77
const { track, audio, playing, progress, duration } = usePlayer()
88

9+
const { mediaSession } = navigator
10+
911
watch(track, () => {
1012
if (track.value) {
11-
navigator.mediaSession.metadata = new MediaMetadata({
13+
mediaSession.metadata = new MediaMetadata({
1214
title: track.value.title,
1315
artist: track.value.artist,
14-
artwork: [
15-
{ src: track.value.cover.normal, type: 'image/jpg' },
16-
],
16+
artwork: [96, 128, 192, 256, 384, 512].map(size => ({
17+
src: track.value!.cover.normal,
18+
sizes: `${size}x${size}`,
19+
type: 'image/jpeg',
20+
})),
1721
})
1822
}
1923
else {
20-
navigator.mediaSession.metadata = null
24+
mediaSession.metadata = null
2125
}
2226
})
2327

2428
watch([track, playing], ([track, playing]) => {
25-
navigator.mediaSession.playbackState = !track ? 'none' : playing ? 'playing' : 'paused'
29+
mediaSession.playbackState = !track ? 'none' : playing ? 'playing' : 'paused'
2630
})
2731
watch([progress, duration], ([progress, duration]) => {
2832
if (duration > 0) {
29-
navigator.mediaSession.setPositionState({
33+
mediaSession.setPositionState({
3034
position: progress,
3135
playbackRate: audio.playbackRate,
3236
duration,
3337
})
3438
}
3539
else {
36-
navigator.mediaSession.setPositionState(undefined)
40+
mediaSession.setPositionState(undefined)
3741
}
3842
})
3943

4044
const { prev, next } = useCurrentTrack()
4145
tryOnMounted(() => {
42-
navigator.mediaSession.setActionHandler('play', () => playing.value = true)
43-
navigator.mediaSession.setActionHandler('pause', () => playing.value = false)
44-
navigator.mediaSession.setActionHandler('previoustrack', prev)
45-
navigator.mediaSession.setActionHandler('nexttrack', next)
46-
navigator.mediaSession.setActionHandler('seekto', ({ seekTime }) => progress.value = seekTime)
47-
navigator.mediaSession.setActionHandler('stop', () => track.value = undefined)
46+
mediaSession.setActionHandler('play', () => playing.value = true)
47+
mediaSession.setActionHandler('pause', () => playing.value = false)
48+
mediaSession.setActionHandler('previoustrack', prev)
49+
mediaSession.setActionHandler('nexttrack', next)
50+
mediaSession.setActionHandler('seekto', ({ seekTime }) => progress.value = seekTime)
51+
mediaSession.setActionHandler('stop', () => track.value = undefined)
4852
})
4953
})

0 commit comments

Comments
 (0)