Skip to content

Commit 9b2007f

Browse files
committed
添加媒体会话检查
1 parent 0490bcc commit 9b2007f

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

src/core/compat/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { Equal, Expect } from '@utils/types'
22

33
import { clipboardItem } from './items/clipboard'
44
import { fileSystemItem } from './items/fileSystem'
5+
import { mediaSessionItem } from './items/mediaSession'
56
import { sharedArrayBufferItem } from './items/sharedArrayBuffer'
67
import type { Compatibility as CP } from './types'
78

@@ -11,12 +12,14 @@ export const compatibilityMap = {
1112
[fileSystemItem.key]: fileSystemItem.meet,
1213
[clipboardItem.key]: clipboardItem.meet,
1314
[sharedArrayBufferItem.key]: sharedArrayBufferItem.meet,
15+
[mediaSessionItem.key]: mediaSessionItem.meet,
1416
} as const satisfies Record<string, boolean>
1517

1618
const _compatibilityList = [
1719
fileSystemItem,
1820
clipboardItem,
1921
sharedArrayBufferItem,
22+
mediaSessionItem,
2023
] as const satisfies readonly CP.CompatibilityItem[]
2124

2225
export const compatibilityList: readonly CP.CompatibilityItem[] = _compatibilityList
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import type { Compatibility as CP } from '..'
2+
3+
const mediaSessionInfo = {
4+
key: 'mediaSession',
5+
name: '媒体会话',
6+
description: '媒体会话 (Media Session) 允许网页自定义媒体通知和响应媒体键事件。',
7+
referenceUrls: [
8+
{ label: 'Can I Use: Media Session', url: 'https://caniuse.com/wf-media-session' },
9+
],
10+
severity: 'info',
11+
effect: '将不能从系统媒体控制界面(如锁屏界面或通知中心)控制媒体播放。',
12+
} as const satisfies CP.CompatibilityInfo
13+
14+
const meet =
15+
'mediaSession' in navigator &&
16+
typeof navigator.mediaSession.metadata === 'object' &&
17+
typeof navigator.mediaSession.setActionHandler === 'function'
18+
19+
function findWhy(): string | undefined {
20+
if (meet) return undefined
21+
return '浏览器不支持媒体会话相关的 API。此 API 在 Chromium 72、Firefox 82、Safari 15 或以上版本中支持。Firefox Android 目前不支持。'
22+
}
23+
const why = findWhy()
24+
25+
export const mediaSessionItem = {
26+
...mediaSessionInfo,
27+
meet,
28+
why,
29+
} as const satisfies CP.CompatibilityItem

0 commit comments

Comments
 (0)