[ 
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

Reply via email to