Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:阻止应用程序在后台启动_Ios_Iphone_Objective C_Ios7_Avplayer - Fatal编程技术网

iOS:阻止应用程序在后台启动

iOS:阻止应用程序在后台启动,ios,iphone,objective-c,ios7,avplayer,Ios,Iphone,Objective C,Ios7,Avplayer,我目前正在构建一个音乐应用程序,它从iOS7控制中心获取控制。我注意到的一个特性是,如果我按下“播放”控制按钮,我的应用程序将启动,即使它已被关闭。这不是我希望发生的事情,因此我在didfishlaunchingwithoptions中添加了return NO,如果应用程序在后台启动以阻止初始化过程 不幸的是,这并没有改变应用程序仍然启动的事实,并且不会再次调用didfishlaunchwithoptions(并且不会初始化任何内容)。既然我不想让应用程序在启动时强制自杀,有没有办法阻止应用程序

我目前正在构建一个音乐应用程序,它从iOS7控制中心获取控制。我注意到的一个特性是,如果我按下“播放”控制按钮,我的应用程序将启动,即使它已被关闭。这不是我希望发生的事情,因此我在
didfishlaunchingwithoptions
中添加了
return NO
,如果应用程序在后台启动以阻止初始化过程


不幸的是,这并没有改变应用程序仍然启动的事实,并且不会再次调用
didfishlaunchwithoptions
(并且不会初始化任何内容)。既然我不想让应用程序在启动时强制自杀,有没有办法阻止应用程序启动?我原以为返回
NO
就可以了,但事实并非如此。

你想让你的应用程序在后台运行吗


如果没有,您只需添加一个info.plist值,这样它就不会进入后台,当用户点击home按钮时,它就会关闭。

我发现了这个问题的主要原因之一。它与音频会话和应用程序注册的各种通知/代理有关。在
AppDelegate的
应用程序willterminate:
中,我必须确保调用:

[[UIApplication sharedApplication]endReceivingRemoteControlEvents]

[[AVAudioSession sharedInstance]设置活动:不带选项:AvaudioSessionSetActiveOption通知其他人停用错误:&audioSessionError]


还可以注销任何音频通知(中断和路由更改)

我不确定您使用的“播放”功能是什么,但如果您在应用程序终止时取消订阅“播放”通知,可能会成功吗?
如果应用程序是由于远程通知而启动的,则返回值将被忽略。
:谢谢,这至少解决了一个谜@IvanAlek问题是,在应用程序被终止之前,没有特定的位置可以添加这样的呼叫。iOS 7中的预期行为是,应用程序支持恢复背景音频以响应媒体控件,即使它们没有运行。你可能有你的理由,但不确定它是否会通过应用程序审查,如果你去应用程序商店。我没有在HIG中找到任何关于它的信息,因此您可能很好,但是可以看到从
未运行
状态恢复bg音频。检查
应用程序中的
应用程序状态
应用程序:使用选项完成启动:
当启动到前台时,UIApplicationStateInactive
,或当启动到后台时,
UIApplicationStateBackground
<代码>应用程序标识符背景:
然后被调用,而不是
应用程序标识符背景:
。该应用程序被设置为在后台运行,但不是在后台启动,尽管它开始看起来像应该在后台运行。