如何在cordova的HTML5video播放期间忽略铃声设置

我想让Cordova的HTML5video播放器在铃声开关设置为“静音”时播放声音,就像Safari中的默认行为一样。 我设法通过摆弄cordova默认视图控制器来获得我想要的行为,但我宁愿不修改cordova的默认控制器(部分原因是因为它似乎是错误的,但主要是因为我们希望能够重新编译)build立我们的cordova应用程序,而不必担心修改库文件。)

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

1)我错过了一个明显的设置让cordova为我做这个? 我看到媒体插件做了类似的事情,但没有find像video的东西。

2)我的临时解决scheme/概念validation涉及修改Cordova控制器的“viewDidLoad”处理程序中的AudioSession类别。 我在正确的地方修改控制器代码吗? 我是否通过这样做来破坏已经存在的会话?

2)如果从Obj-C / ios应用程序初始化的angular度来看,我的当前代码是OK的,那么我怎样才能将它与Cordova集成,以便我们可以使用它来构build一个新的Cordova项目(因为这是我们构build过程的一部分)? 如果我将代码封装到一个插件中,“pluginInitialize”是否可以执行它?

我没有太多的Objective-C / iOS原生经验,所以如果这主要是知道正确的事情来search/或理解应用程序初始化的问题,也可以赞赏!

编辑:使用的cordova版本是3.5.0-0.2.7

当前的代码


这里是我干扰cordova视图控制器的代码:

我假设cordova的WebView使用苹果默认audio设置( 苹果文档 )进行video播放:

AVAudioSessionCategoryAmbient

声音播放不是非主要的应用程序的类别,即您的应用程序可以在声音closures的情况下成功使用。

我假设我想使用AVAudioSessionCategoryPlayback设置。

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

【工程/ IOSbuild造] /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); } 

然后,我们的video播放audio,铃声静音成功,但是,如上所述,我想就如何将此代码与Cordova进行集成提供build议,而不是就地编辑。

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

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

运行这个命令将它添加到你的项目中:

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