SKAction playSoundFileNamed 没有声音通过 iphone 扬声器

Posted

技术标签:

【中文标题】SKAction playSoundFileNamed 没有声音通过 iphone 扬声器【英文标题】:SKAction playSoundFileNamed no audio through iphone speaker 【发布时间】:2013-11-20 18:33:40 【问题描述】:

是否有人在通过 ios 设备的外部扬声器使用 iOS Sprite Kit 通过 SKAction playSoundFileNamed 播放音频时遇到问题?我有以下代码可以通过耳机毫无问题地播放 M4A 文件;但是,当我拔下耳机单步执行代码时,不会播放任何音频。我有另一个不使用此方法的应用程序,它可以正常运行。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    /* Called when a touch begins */

    for (UITouch *touch in touches) 
        CGPoint location = [touch locationInNode:self];
        SKAction *sound = [SKAction playSoundFileNamed:@"blast.m4a" waitForCompletion:NO];
        [self runAction:sound];
 

【问题讨论】:

【参考方案1】:

我遇到了类似的问题,但可以通过将 AudioSession 类别设置为 Playback 来解决它。这会导致音频在未插入耳机时通过手机的扬声器传送。

// at the top of AppDelegate.m
#import <AVFoundation/AVFoundation.h>

// in application:didFinishLaunchingWithOptions:
NSError *error;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];

您可以在 Apple 的Audio Session Programming Guide 中找到更多信息。

【讨论】:

【参考方案2】:

只是为了更新,我今天安装了 IOS 7.0.4 并重新测试,现在我在外部扬声器上有音频,所以我假设这是 IOS 7.0.3 中的一个错误,因为这是我所做的唯一更改到设备。

【讨论】:

以上是关于SKAction playSoundFileNamed 没有声音通过 iphone 扬声器的主要内容,如果未能解决你的问题,请参考以下文章

SKAction playSoundFileNamed 错误

SKAction playSoundFileNamed 没有声音通过 iphone 扬声器

从 SKAction 播放音乐

在 Spritekit Swift 中停止音频

使用导致内存泄漏的音频片段

开始一个节点暂停的场景