Sprite Kit声音问题,如何防止停止用户声音

时间:2014-05-20 13:22:10

标签: ios ios7 avplayer

我在使用Sprite Kit时遇到问题,当我想在用户交互后播放声音时。

用户正在使用应用程序(例如Spotify)收听音乐 用户想要在他的歌曲中播放我的游戏,目前当使用启动我的应用程序时,他的歌曲就会停止。

我想阻止这种行为,事实上:如果其他应用使用“声音”,或者我如何播放声音并保持用户的音乐播放,我该怎么做才能播放声音。< / p>

目前这是我的代码:

@property (strong, nonatomic) SKAction *hitSound;

在init方法中:

 _hitSound = [SKAction playSoundFileNamed:@"laugh.caf" waitForCompletion:NO];

用户按下屏幕后:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
 SKAction *sequence = [SKAction sequence:@[_hitSound]];
    [node runAction:sequence completion:^{
       //Stuff
}];

}

1 个答案:

答案 0 :(得分:6)

您的应用需要管理 AVAudioSession ,以便继续播放背景音频。这将允许后台音频应用程序继续播放,您的应用程序声音将与它混合。

AVAudioSession 类是单例类,是 AVFoundation 框架的一部分。务必将 AVFoundation 与目标相关联。在需要它的类中导入框架。

#import <AVFoundation/AVFoundation.h>

声明应用程序音频会话的好地方在应用程序委托中,因此以下代码可以放在 application:didFinishLaunchingWithOptions:方法中。

// activate a mixable session
// set audio session category AVAudioSessionCategoryPlayback

     [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
     [[AVAudioSession sharedInstance] setMode:AVAudioSessionModeDefault error:nil];
     [[AVAudioSession sharedInstance] setActive:YES error: nil];

就您自己的应用程序听起来与否一样,一种可能性是将 BOOL 类型的属性命名为 '静音' 并检查播放音频是否需要 SKAction 。您可以检查背景音频是否正在播放,并相应地设置 '静音' 属性。您还可以决定为设置此属性的用户提供界面。可能性很多。

您可以检查背景音频是否正在播放 -

BOOL isPlayingAudio = [[AVAudioSession sharedInstance] otherAudioPlaying];

从这里开始,您的代码可以决定将 self.mute 设置为。

在此处找到

AVAudioSession 类引用 - AVAudioSession Class Reference