[
https://issues.apache.org/jira/browse/CB-11513?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15356934#comment-15356934
]
Thomas K. edited comment on CB-11513 at 6/30/16 11:40 AM:
----------------------------------------------------------
{noformat}
(void)onMemoryWarning
{
NSMutableArray* keysToRemove = [[NSMutableArray alloc] init];
for(id key in [self soundCache]) {
CDVAudioFile* audioFile = [[self soundCache] objectForKey:key];
if (audioFile != nil) {
if (audioFile.player != nil && ![audioFile.player isPlaying]) { //
skip playing sounds
[keysToRemove addObject:key];
}
if (audioFile.recorder != nil && ![audioFile.recorder isRecording])
{ // skip recording sounds
[keysToRemove addObject:key];
}
}
}
[[self soundCache] removeObjectsForKeys:keysToRemove];
[self setAvSession:nil];
[super onMemoryWarning];
}
{noformat}
was (Author: katzlbt):
(void)onMemoryWarning
{
NSMutableArray* keysToRemove = [[NSMutableArray alloc] init];
for(id key in [self soundCache]) {
CDVAudioFile* audioFile = [[self soundCache] objectForKey:key];
if (audioFile != nil) {
if (audioFile.player != nil && ![audioFile.player isPlaying]) { //
skip playing sounds
[keysToRemove addObject:key];
}
if (audioFile.recorder != nil && ![audioFile.recorder isRecording])
{ // skip recording sounds
[keysToRemove addObject:key];
}
}
}
[[self soundCache] removeObjectsForKeys:keysToRemove];
[self setAvSession:nil];
[super onMemoryWarning];
}
> iOS memory warning stops sound, but does not send status to JS-client
> ---------------------------------------------------------------------
>
> Key: CB-11513
> URL: https://issues.apache.org/jira/browse/CB-11513
> Project: Apache Cordova
> Issue Type: Bug
> Components: Plugin Media
> Affects Versions: 3.6.3, 4.1.3, 6.1.0
> Environment: iOS 9.3 iPhone 6
> Reporter: Thomas K.
>
> If iOS issues a memory warning while playing a sound, all sounds are
> terminated. However the ios/CDVSound.m plugin does not update the state of
> its JS-clients, so the last state the Client knows is Media.MEDIA_RUNNING,
> which is untrue after a memory warning. This results in incorrect clientside
> status.
> Problem: A user's software component may send pause() instead of play()
> (toggle button) effectively rendering the sound unplayable without recovery.
> This happened in our case.
> Fix: Send a correct message to update the status at the JS-client to
> Media.MEDIA_STOPPED or do not discard currently playing sounds.
> https://github.com/apache/cordova-plugin-media/blob/master/src/ios/CDVSound.m#L814
> How to reproduce: Add 1 or 2 large animated GIFs with 200+ frames to the
> UIWebView, this will consume 500MB quickly while playing the GIFs, or
> simulate the memory warning using the iOS Simulator while playing a sound.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]