Ios 精灵套件声音问题,如何防止停止用户声音

Ios 精灵套件声音问题,如何防止停止用户声音,ios,ios7,avplayer,Ios,Ios7,Avplayer,当我想在用户交互后播放声音时,我在使用Sprite工具包时遇到了问题 用户正在使用应用程序(例如Spotify)收听音乐。 用户想在听他的歌曲时玩我的游戏,当前当使用启动我的应用程序时,他的歌曲被停止 事实上,我想阻止这种行为:如果其他应用程序正在使用“声音”,我如何做才能不播放声音,或者如何播放我的声音并保持用户的音乐播放 目前这是我的代码: @property (strong, nonatomic) SKAction *hitSound; 在init方法中: _hitSound = [S

当我想在用户交互后播放声音时,我在使用Sprite工具包时遇到了问题

用户正在使用应用程序(例如Spotify)收听音乐。
用户想在听他的歌曲时玩我的游戏,当前当使用启动我的应用程序时,他的歌曲被停止

事实上,我想阻止这种行为:如果其他应用程序正在使用“声音”,我如何做才能不播放声音,或者如何播放我的声音并保持用户的音乐播放

目前这是我的代码:

@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
}];

}

您的应用程序需要管理一个允许背景音频继续播放的音频会话。这将允许背景音频应用程序继续播放,您的应用程序声音将与之混合

AVAudioSession类是一个单例类,是AVFoundation框架的一部分。确保将AVFoundation链接到您的目标。在需要的类中导入框架

#import <AVFoundation/AVFoundation.h>
就您自己的应用程序是否播放声音而言,一种可能是将类型为BOOL的属性命名为say'mute',并检查是否需要SKAction来播放音频。您可以检查是否正在播放背景音频,并相应地设置'mute'属性。您还可以决定向设置此属性的用户提供一个接口。可能性很多

您可以检查背景音频是否像这样播放-

BOOL isPlayingAudio = [[AVAudioSession sharedInstance] otherAudioPlaying];
从这里,您的代码可以决定将self.mute设置为什么


AVAudioSession此处找到的类参考-

考虑使用
AVAudioSession
类别
AVAudioSessionCategoryAmbient
(不需要该选项),而不是
AVAudioSessionCategoryPlayback
。即使设备锁定或设置为静音,后者也可以播放声音;这对游戏来说似乎不合适。考虑把代码放在代码>应用程序中:WiFrimeStudioCopyOuts:Eng/S>而不是<代码>应用程序:DIDFixIsAccess选项:。如果你的游戏和我的一样,它使用应用程序状态恢复,并且在恢复过程中预加载场景的资源--。此时应该已经配置了
AVAudioSession
。查看头文件,显然,从iOS 8开始,您应该使用
[AVAudioSession sharedInstance]。第二音频应该是silencedHint
而不是
其他音频播放
。当另一个具有不可混合音频会话的应用程序正在播放音频时,将为true。应用程序可以将此属性用作提示,以使应用程序功能次要的音频静音。例如,使用AVAudioSessionCategoryAmbient的游戏应用程序可能会使用此属性来决定将其音轨静音,同时保持其音效未静音。
BOOL isPlayingAudio = [[AVAudioSession sharedInstance] otherAudioPlaying];