iOS 7.1 Sprite工具包AVAudioSession在进入背景时崩溃

所以2个星期前,我提交了一个精灵套件应用程序到应用程序商店,这一切都很好。 我在提交应用程序之前遇到了问题,因为AvAudioSession会崩溃,但是我能够通过这个Sprite Kit修复这个问题,并且播放声音导致应用程序终止 。 这基本上将AVAudioSession设置为在进入后台时处于非活动状态,然后在进入前台时再次处于活动状态。 我最近更新我的手机它的iOS 7.1,这个修复似乎并没有在新的7.1,我的应用程序再次崩溃,每当它进入后台。 我已经把我的应用程序的所有audio,它似乎工作正常,所以这是同样的问题,因为我刚才解决scheme不工作!我真的需要解决这个问题,因为我有一个更新准备提交干杯山姆

我做的!

我在- (void)applicationWillResignActive:(UIApplication *)application暂停了SKView,并将AVAudioSession设置为非活动状态。

AppDelegate.h

  #import <SpriteKit/SpriteKit.h> 

AppDelegate.m

  - (void)applicationWillResignActive:(UIApplication *)application { // prevent audio crash [[AVAudioSession sharedInstance] setActive:NO error:nil]; SKView *view = (SKView *)self.window.rootViewController.view; view.paused = YES; } - (void)applicationDidEnterBackground:(UIApplication *)application { [[AVAudioSession sharedInstance] setActive:NO error:nil]; } - (void)applicationDidBecomeActive:(UIApplication *)application { SKView *view = (SKView *)self.window.rootViewController.view; view.paused = NO; [[AVAudioSession sharedInstance] setActive:YES error:nil]; } 

join@ObjectivesCsam回答:

当rootViewControllers视图不是SKView你可以使用

 - (SKView *)getGameView { NSArray *viewControllers = self.window.rootViewController.childViewControllers; for (UIViewController *vc in viewControllers) { if ([vc.view isKindOfClass:[SKView class]]) { SKView *view = (SKView *)vc.view; return view; } } return nil; }