如何在Cordova的HTML5视频播放过程中忽略铃声设置

Ste*_*son 8 html5 objective-c ios cordova

我希望Cordova中的HTML5视频播放能够在振铃开关设置为"静音"时播放声音,就像Safari中的默认行为一样.我设法通过摆弄Cordova默认视图控制器来获得我想要的行为,但我宁愿不修改Cordova的默认控制器(部分因为它似乎错了,但主要是因为我们希望能够重新构建我们的Cordova应用程序,而不必担心修改库文件.)

所以我的主要问题是我不太确定如何继续向Cordova的控制器初始化添加一些代码.我不确定有几件事:

1)我错过了一个明显的设置让科尔多瓦为我做这件事吗?我看到媒体插件做了类似的事情,但找不到类似的视频.

2)我的临时解决方法/概念证明涉及修改Cordova控制器的"viewDidLoad"处理程序上的AudioSession类别.我是否在正确的位置修改控制器代码?这样做会破坏已经存在的会话吗?

2)如果从Obj-C/ios应用程序初始化的角度来看我的当前代码是正常的,我如何将它与Cordova集成,以便我们可以使用它构建一个新的Cordova项目(因为这是我们构建过程的一部分)?如果我将代码包装到插件中,"pluginInitialize"是否适合执行它?

我没有太多的Objective-C/iOS原生体验,所以如果这主要是知道正确的事情来搜索/或理解应用程序初始化答案,那么这个效果也将受到赞赏!

编辑:正在使用的Cordova版本是3.5.0-0.2.7

目前的代码


这是我卡在Cordova视图控制器中的代码:

我假设Cordova的WebView使用Apple默认音频设置(apple docs)进行视频播放:

AVAudioSessionCategoryAmbient

声音播放非主要应用的类别 - 也就是说,您的应用可以在声音关闭时成功使用.

我假设我想使用AVAudioSessionCategoryPlayback设置.

我编辑了主要的Cordova视图控制器:

【工程/ IOS建造] /CordovaLib/Classes/CDVViewController.m"

将此代码段放在 "viewDidLoad"处理程序中的另一个答案中:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
BOOL ok;
NSError *setCategoryError = nil;
ok = [audioSession setCategory:AVAudioSessionCategoryPlayback
                     error:&setCategoryError];
if (!ok) {
  NSLog(@"%s setCategoryError=%@", __PRETTY_FUNCTION__, setCategoryError);
}
Run Code Online (Sandbox Code Playgroud)

然后我们的视频播放音频并且铃声成功静音,但是,如上所述,我想了解如何将此代码与Cordova集成,而不是就地编辑.

Dev*_*v01 3

这个插件会做你想做的事。它基本上添加了您正在使用的代码,并使您的应用程序忽略静音开关。

https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio

运行以下命令将其添加到您的项目中:

cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio.git
Run Code Online (Sandbox Code Playgroud)