[ 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:37 AM: ---------------------------------------------------------- (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]) { [keysToRemove addObject:key]; } if (audioFile.recorder != nil && ![audioFile.recorder isRecording]) { [keysToRemove addObject:key]; } } } [[self soundCache] removeObjectsForKeys:keysToRemove]; [self setAvSession:nil]; [super onMemoryWarning]; } 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]) { [keysToRemove addObject:key]; } if (audioFile.recorder != nil && ![audioFile.recorder isRecording]) { [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: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org