使用圆弧
只是我遇到的一个问题- 我有一个 SKScene,我在其中使用 SKAction 类方法播放声音效果
[SKAction playSoundFileNamed:@"sound.wav" waitForCompletion:NO];
现在,当我尝试进入后台时,无论声音是否结束,显然 iOS 正在终止我的应用程序,原因是 gpus_ReturnNotPermittedKillClient
。
现在只有当我评论这一行并且不运行操作时,iOS 才会在后台运行它(当然,暂停,但没有终止)。
我做错了什么?
编辑:如果该行未运行,iOS 将不会终止该应用程序 - 比如说,如果它在未运行的 if 语句
中 (soundOn == YES)
或类似的东西,当 bool 为 false
最佳答案
问题是 AVAudioSession
在应用程序进入后台时无法激活。这不是很明显,因为 Sprite Kit 没有提到它在内部使用 AVAudioSession。
修复非常简单,也适用于 ObjectAL => 在应用程序处于后台时将 AVAudioSession
设置为非事件状态,并在应用程序进入前台时重新激活 Audio Session 。
经过此修复的简化 AppDelegate 如下所示:
#import <AVFoundation/AVFoundation.h>
...
- (void)applicationWillResignActive:(UIApplication *)application
{
// prevent audio crash
[[AVAudioSession sharedInstance] setActive:NO error:nil];
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// prevent audio crash
[[AVAudioSession sharedInstance] setActive:NO error:nil];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// resume audio
[[AVAudioSession sharedInstance] setActive:YES error:nil];
}
PS:此修复程序将包含在 Kobold Kit 中v7.0.3.
关于ios - Sprite Kit & 播放声音导致应用程序终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18976813/