¿Cómo detener un SKAction de audio?

Objetivo: quiero presentar una nueva escena:

[self.scene.view presentScene:level2 transition:reveal];

y finalizar la música de fondo actual para comenzar la nueva música de fondo (la nueva música de fondo del nivel 2).

El problema: al presentar la nueva escena, la música de fondo de la 1. escena (nivel 1) continúa reproduciéndose y NO se detiene incluso cuando sale del miniGame, ya que todo el juego consta de pocos mini juegos.

La música que se reproduce es una SKAction:

@implementation WBMAnimalMiniGameLvL1

    -(id)initWithSize:(CGSize)size {    
        if (self = [super initWithSize:size])
        {
            /* Setup your scene here */
        self.temporaryScore = 0;
        self.animalSKSprites = [[WBMAnimalsMiniGameModel alloc] init];
        self.backgroundImage = [SKSpriteNode spriteNodeWithImageNamed:@"farmBackground1024x768.png"];
        self.backgroundImage.position = CGPointMake(CGRectGetMidX(self.frame),
                                       CGRectGetMidY(self.frame));
        self.temporaryStartingPointIndex = -1;
        [self addChild:self.backgroundImage];
        self.playBackgroundSound = [SKAction playSoundFileNamed:@"farm.mp3" waitForCompletion:NO];

        //SKAction *repeat = [SKAction repeatActionForever:playSound];
        [self runAction:self.playBackgroundSound withKey:@"play"];

        [self drawAllAnimalsOntoScreen];

    }
    return self;
}

Aquí ocurre la transición al siguiente nivel:

-(void)transitionToNextLevel
{
    NSLog(@"transitionToNextLevel");
    SKTransition *reveal = [SKTransition moveInWithDirection:SKTransitionDirectionDown duration:0.5];
    //SKView *skView = (SKView *)self.view;
    SKScene *level2 = [[WBMAnimalMiniGameLvL2 alloc] initWithSize:self.size];

    level2.scaleMode = SKSceneScaleModeAspectFill;

    [self removeAllActions];
    [self removeActionForKey:@"play"];
    //self.scene.view.paused = YES;
    //self.playBackgroundSound = nil;
    [self.scene.view presentScene:level2 transition:reveal];
}

En las líneas de código de comentarios puedes ver lo que ya he probado y lo que no funcionó. Los :

[self removeAllActions];
    [self removeActionForKey:@"play"];

no hizo absolutamente nada. Los:

self.scene.view.paused = YES;

la línea solo detiene la transición pero la música continúa.

He intentado lo siguiente: - usé una propiedad débil o fuerte en un:

@property (nonatomic,weak) SKAction *playBackgroundSound;

para asegurar un puntero a SKAction para poder acceder a él además de usar la propiedad "withKey" desde que inicialicé SKAction en "initWithSize". Alguien escribió que SKAction es un objeto de disparar y olvidar que entendí que sin haber almacenado un puntero para acceder a él más tarde no es posible (directamente). Sin embargo, no funcionó / me ayudó.

Miré en muchas otras publicaciones de stackoverflow y ninguna me ayudó o al menos me dio una idea de por qué sucede esto:

SKAction playSoundFileNamed detiene la música de fondo

Detener SKAction que se repite para siempre - Sprite Kit

¿Es posible finalizar una acción media de SKAction?

Pausar una escena del kit de sprites

... Pensamientos: Parece que la acción se crea con la creación del objeto SKScene. Se "engancha" y termina después de la duración del audio. Mientras usaba repeatForever nunca se detendría. Sin embargo, no hay forma de pausarlo o detenerlo. También intenté conectar el SKAction a SKSpriteNode. Cuando se carga el SKScene, los animales se cargan con él. Así que intenté enganchar el SKAction en el SKSpriteNode y usé removeAllActions y similares del SKSpriteNode, pero tampoco funcionó.

Revisé la documentación en SKAction, SKView, SKScene, SKSpriteNode pero al final no me ayudó mucho.

Parece que el objeto existe en algún lugar ejecutando sus acciones.

De qué no se trata el error:

No es un error relacionado con el simulador o el dispositivo: lo he probado tanto en el simulador como en el dispositivo con el mismo resultado (error).

No es un error relacionado con el proyecto: lo he probado en un proyecto separado, mucho más pequeño y con el mismo resultado (error).

Una solución temporal: he estado usando la clase AVAudioPlayer del marco AVFoundation. Creé un:

//@property (nonatomic) AVAudioPlayer *theBackgroundSong;

Esto no ayudó mucho ya que quería cambiar theBackgroundSong cuando se cargó el nivel 2 y tuve grandes problemas para acceder a la propiedad desde una estructura SKScene anidada.

Cualquier consejo, pista, sugerencia o idea sería de gran ayuda.

Respuestas a la pregunta(2)

Su respuesta a la pregunta