GitHub user tbrebant opened a pull request:
https://github.com/apache/cordova-plugin-media/pull/100
CB-7684: (iOS) Fix CDVSound killing all audio when a single file finishes
### Platforms affected
iOS
### What does this PR do?
We arrived to the same conclusion as Nathan Stryker on Jira
(https://issues.apache.org/jira/browse/CB-7684) and @ionut-movila in the PR
https://github.com/apache/cordova-plugin-media/pull/33 : all `self.avSession
setActive:NO` should be removed.
The problem was not only that when a media finishes it is stopping other
ones played by the plugin, but it is also killing any sound played by another
plugin or by WebView's default webaudio system, triggering a descriptive:
```
AVAudioSession.mm:646: -[AVAudioSession setActive:withOptions:error:]:
Deactivating an audio session that has running I/O. All I/O should be stopped
or paused prior to deactivating the audio session.
```
We found that `AVAudioSession` is a singleton for the whole app (cf.
https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/).
Apple says:
> Most apps never need to deactivate their audio session explicitly.
Important exceptions include VoIP (Voice over Internet Protocol) apps,
turn-by-turn navigation apps, and, in some cases, recording apps.
(cf.
https://developer.apple.com/library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/ConfiguringanAudioSession/ConfiguringanAudioSession.html)
### What testing has been done on this change?
- Played multiple sounds (non streaming) with the plugin, then waited for
one to stop: it is not stopping other sounds anymore.
- Played multiple sounds (non streaming) with the plugin, then stopped one
and released it: it is not stopping other sounds anymore.
- Played a sound (non streaming) with the plugin and another one via
webview's webaudio, then waited the one played by the plugin to end: it is not
stopping other sounds anymore.
- Played a sound (non streaming) with the plugin and another one via
webview's webaudio, then stopped and released the one played by the plugin: it
is not stopping other sounds anymore.
- Checked all possibilities with Xcode monitoring application: no memory
issue detected.
Ran the integrated tests. Before doing any change (version 2.3.1-dev) the
result was:

After the change the result is exactly the same:

Before merging, it would be great if someone can test:
- an application using the recording feature
- an application using the streaming feature
### Checklist
- [x] [ICLA](http://www.apache.org/licenses/icla.txt) has been signed and
submitted to [email protected].
- [x] [Reported an issue](http://cordova.apache.org/contribute/issues.html)
in the JIRA database
- [x] Commit message follows the format: "CB-3232: (android) Fix bug with
resolving file paths", where CB-xxxx is the JIRA ID & "android" is the platform
affected.
- [ ] Added automated test coverage as appropriate for this change.
About the last point: I don't see what kind of tests we can add for this
fix.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/tbrebant/cordova-plugin-media CB7684
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/cordova-plugin-media/pull/100.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #100
----
commit 40a561d87fcebb5114fbdc01e6dafd6c617956fc
Author: tbrebant <[email protected]>
Date: 2016-06-10T07:35:01Z
CB-7684: (iOS) Fix CDVSound killing all audio when a single file finishes
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]