我正在构建一个 Android 应用程序,它将我的 Progressive Web App 包装为受信任的 Web 活动。(我正在遵循Google 示例项目中的指南。)
当用户在应用程序中播放音频时,设备上会出现一个媒体通知。我正在使用网络媒体会话 API 来自定义此通知的内容。
如果在普通 Web 浏览器中运行 PWA,一旦出现通知,按下它会将用户返回到相关的浏览器选项卡。(如果手机被锁定,会提示用户解锁。)
如果媒体通知是从 TWA 触发的,则按下它不会执行任何操作。(播放/暂停等其他功能按预期工作。)
媒体会话 API的范围相当有限。MediaSession 操作类型不包括使应用程序聚焦的操作。
navigator.mediaSession.setActionHandler('pause', () => {
audioElement.pause();
navigator.mediaSession.playbackState = 'paused';
});
navigator.mediaSession.setActionHandler('play', () => {
audioElement.play();
navigator.mediaSession.playbackState = 'playing';
});
navigator.mediaSession.metadata = new MediaMetadata({
title: 'App',
artist: 'Name',
artwork: [
{ src: '/android-chrome-192x192.png?v=47rE43RRzB', sizes: '192x192', type: 'image/png' },
{ src: '/android-chrome-512x512.png?v=47rE43RRzB', sizes: '512x512', type: 'image/png' },
],
});
当从 TWA 触发媒体通知时,我希望它具有与从 Chrome 等 Web 浏览器触发时相同的功能。
这包括在除播放/暂停控件之外的任何位置按下通知时将用户返回到 TWA(或提示用户解锁设备)。
除了这方面,其他一切都有效。