HarmonyOS鸿蒙Next中使用webview拉流播放视频时,锁屏后通知栏出现了媒体通知

HarmonyOS鸿蒙Next中使用webview拉流播放视频时,锁屏后通知栏出现了媒体通知 使用webview拉流播放视频时,锁屏后通知栏出现了媒体通知,该视频是直播拉流,无法暂停,也不想在通知栏显示该通知

cke_2811.png

尝试给webview设置了以下字段,不生效,仍然显示通知

.mediaPlayGestureAccess(false)

这个好像是系统默认建立的AVSession所以在通知栏显示的?有什么方法可以阻止建立呢


更多关于HarmonyOS鸿蒙Next中使用webview拉流播放视频时,锁屏后通知栏出现了媒体通知的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

你好,试试禁用播控中心。

enableWebAVSession(enabled: boolean)

设置是否支持应用对接到播控中心。当属性没有显式设置时,默认支持应用对接到播控中心。

// xxx.ets
import { webview } from '@kit.ArkWeb';

@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();
  build() {
    Column() {
      Web({ src: $rawfile('index.html'), controller: this.controller })
        .enableWebAVSession(false)
    }
  }
}

更多关于HarmonyOS鸿蒙Next中使用webview拉流播放视频时,锁屏后通知栏出现了媒体通知的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,WebView播放视频时锁屏后出现媒体通知,是系统媒体会话管理的默认行为。该通知由系统媒体控制服务自动生成,用于锁屏界面显示播放控制。此功能与WebView的媒体播放状态绑定,属于系统级特性。

这个问题是由于WebView中的视频播放自动创建了系统AVSession导致的。要阻止通知栏显示媒体通知,可以尝试以下方法:

  1. 在WebView初始化时禁用媒体会话
webViewController.setWebMediaSessionController(new webView.WebMediaSessionController({
  sessionEnabled: false
}));
  1. 如果使用Video组件,设置AVSession相关属性
// 在Video组件中设置
.avSessionEnabled(false)
  1. 通过WebView的JavaScript接口控制: 在加载WebView内容前,注入JavaScript代码来阻止视频元素创建媒体会话:
webViewController.executeScript({
  script: `
    HTMLMediaElement.prototype.play = (function(original) {
      return function() {
        this.setAttribute('data-prevent-session', 'true');
        return original.apply(this, arguments);
      };
    })(HTMLMediaElement.prototype.play);
  `
});
  1. 检查应用权限配置: 在module.json5中确认是否声明了必要的媒体权限,并考虑是否需要调整权限设置。

需要注意的是,禁用AVSession可能会影响某些媒体控制功能,但对于直播流这种不需要暂停控制的场景是合适的。

回到顶部