iOS应用程序不会死,写入控制台&戒烟后播放声音

时间:2012-04-26 11:25:04

标签: ios cocos2d-iphone core-audio undefined-behavior

我的应用有某种僵尸问题。 (不是NSZombie问题。就像,一个从死里复出的问题。)

我首先注意到在调试会话之后,当我要去运行时,我的iPhone上的音乐会每隔约7分钟暂停一次,当我解锁设备时,应用程序名称将在状态栏中闪烁红色好像它刚刚崩溃了有时甚至会有来自应用程序的幻影声音,就像它仍在某种程度上在后台运行一样。

手动退出应用,继续。即使应用程序不再出现在我正在运行的应用程序列表中,仍会获得间歇性的音频工件

当我重新插入时,每次应用程序僵尸化并重新启动时,这都在控制台中。它看起来就像应用程序的正常启动!什么?什么可能触发我的应用程序重新启动?

控制台:

Apr 26 12:10:01 unknown Breakout[2658] <Warning>: cocos2d: cocos2d v1.1.0-beta2b
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: cocos2d: Using Director Type:CCDirectorDisplayLink
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: cocos2d: OS version: 5.1 (0x05010000)
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: cocos2d: GL_VENDOR:   Imagination Technologies
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: cocos2d: GL_RENDERER: PowerVR SGX 535
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: cocos2d: GL_VERSION:  OpenGL ES-CM 1.1 IMGSGX535-63.24
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: cocos2d: GL_MAX_TEXTURE_SIZE: 2048
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: cocos2d: GL_MAX_MODELVIEW_STACK_DEPTH: 16
// etc //
Apr 26 12:10:01 unknown kernel[0] <Debug>: launchd[2658] Builtin profile: container (sandbox)
Apr 26 12:10:01 unknown kernel[0] <Debug>: launchd[2658] Container: /private/var/mobile/Applications/FFEB0A26-06D1-4C46-8AE5-C60582D09A1D [69] (sandbox)
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: Audio session details
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: Audio Input Available? YES 
Apr 26 12:10:01 unknown mediaserverd[32] <Warning>: 12:10:01.641 <SystemSoundServer> WARNING translating HAL error: 561214578 
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: Max Possible Inputs 15151420 
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: Outputs 2 
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: Device sample rate 44100.000000 
Apr 26 12:10:01 unknown Breakout[2658] <Warning>: Hardware buffer size 0.023220 
// etc //
Apr 26 12:10:33 unknown SpringBoard[52] <Notice>: Posting 'com.apple.iokit.hid.displayStatus' notifyState=1
Apr 26 12:10:33 unknown UserEventAgent[12] <Warning>: DEBUG: Changing screen blanked state: 0
Apr 26 12:10:33 unknown SpringBoard[52] <Notice>: MultitouchHID: detection mode: 255->0 (deferring until bootloaded)
Apr 26 12:10:33 unknown SpringBoard[52] <Notice>: MultitouchHID: device bootloaded
Apr 26 12:10:33 unknown SpringBoard[52] <Notice>: MultitouchHID: detection mode: 0->0
Apr 26 12:10:34 unknown kernel[0] <Debug>: set_crc_notification_state 0
Apr 26 12:10:34 unknown ReportCrash[2659] <Notice>: Formulating crash report for process Breakout[2658]
> 
Apr 26 12:10:34 unknown SpringBoard[52] <Warning>: pid_suspend failed for [2658]: Unknown error: -1, Unknown error: -1
Apr 26 12:10:34 unknown SpringBoard[52] <Warning>: Could not set priority of [2658] to 4096, priority: No such process
Apr 26 12:10:34 unknown com.apple.launchd[1] <Warning>: (UIKitApplication:com.charliewilliams.Breakout[0xd5ad]) Job appears to have crashed: Trace/BPT trap: 5
Apr 26 12:10:34 unknown SpringBoard[52] <Warning>: Application 'Breakout' exited abnormally with signal 5: Trace/BPT trap: 5
Apr 26 12:10:35 unknown ReportCrash[2659] <Error>: libMobileGestalt computeUniqueDeviceID: total time for bb to return imei: 0
Apr 26 12:10:35 unknown ReportCrash[2659] <Notice>: Saved crashreport to /var/mobile/Library/Logs/CrashReporter/Breakout_2012-04-26-121033_Tortuga-Gigante.plist using uid: 0 gid: 0, synthetic_euid: 501 egid: 0

解决方案说明:结果很简单 - 1.我在dealloc关闭了我的音频会话,但没有关注applicationDidEnterBackground。因为我正在使用kaudiosessioncategory_playandrecord,如果它在后台崩溃,似乎会告诉iOS重启应用程序。

现在,为什么它会在后台崩溃? ......好吧,这是我的下一个任务。

3 个答案:

答案 0 :(得分:2)

该应用可能设置了背景voip标志。如果是,则操作系统将在异常退出时(或设备重新启动时)重新启动应用程序。

答案 1 :(得分:2)

你正在使用什么音频框架?退出应用程序后继续进行音频处理时,iPod应用程序,GarageBand和其他音频应用程序会在标题栏中呈现红色闪烁。对于Cocos Denshion我不会想到这种情况,所以你必须使用Apple框架来制作音频吗?答案可能取决于它的配置方式。 Apple提供了一些自己的音频框架权限,可以在后台继续运行,因此您可以自定义音乐播放,例如广播电台的应用程序等。

答案 2 :(得分:0)

我们可能还需要代码片段,因为日志不告诉我们执行了什么代码