HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Sprite Kit声音问题,如何防止用户停止声音大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用Sprite Kit时遇到问题,当我想在用户交互后播放声音时.

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

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

目前这是我的@L_801_4@:

@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.这将允许后台音频应用程序继续播放,您的应用程序声音将与它混合.

AVAudioSession类是单例类,是AVFoundation框架的一部分.务必将AVFoundation链接到目标.在需要它的类中导入框架.

#import <AVFoundation/AVFoundation.h>

声明应用程序音频会话的好地方在应用程序委托中,因此可以在应用程序中放置以下@L_801_4@:didFinishLaunchingWithOptions:method.

// 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类型的属性命名为’mute’并检查是否需要SKAction来播放音频.您可以检查是否正在播放背景音频并相应地设置“静音”属性.您还可以决定为设置此属性用户提供界面.可能性很多.

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

BOOL isPlayingAudio = [[AVAudioSession sharedInstance] otherAudioPlaying];

从这里开始,您的@L_801_4@可以决定将self.mute设置为什么.

AVAudioSession类参在这里找到 – AVAudioSession Class Reference

大佬总结

以上是大佬教程为你收集整理的ios – Sprite Kit声音问题,如何防止用户停止声音全部内容,希望文章能够帮你解决ios – Sprite Kit声音问题,如何防止用户停止声音所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。