【发布时间】:2023-03-30 09:35:01
【问题描述】:
我目前正在构建一个从 iOS7 控制中心进行控制的音乐应用程序。我注意到的功能之一是,如果我按下“播放”控制按钮,我的应用程序将启动,即使它已被杀死。这不是我想要发生的事情,所以如果应用程序在后台启动以防止初始化过程,我在didFinishLaunchingWithOptions 中添加了return NO。
不幸的是,这并没有改变应用程序仍然启动的事实,并且不会再次调用didFinishLaunchingWithOptions(并且没有初始化任何内容)。由于当我不想启动应用程序时,我不能让应用程序强行杀死它,有没有办法阻止应用程序启动?我原以为返回 NO 会成功,但事实并非如此。
【问题讨论】:
-
我不确定你在使用什么“播放”功能,但也许如果你在应用程序终止时取消订阅“播放”通知,会成功吗?
-
The return value is ignored if the app is launched as a result of a remote notificationdeveloper.apple.com/library/ios/documentation/uikit/reference/…: -
谢谢,这至少解决了一个谜。 @IvanAlek 的问题是,在应用程序被终止之前,我没有特定的位置可以添加这样的调用。
-
现在在 iOS 7 中的预期行为是应用程序支持恢复背景音频以响应媒体控件,即使它们没有运行。您可能有自己的理由,但如果您要去 App Store,则不确定它是否会通过应用审核。我在 HIG 中没有找到任何关于它的信息,所以你可能没问题,但请参阅 iOS 7 Release Notes
-
从
not running状态恢复背景音频是launching into the background。在application:didFinishLaunchingWithOptions:中检查application.applicationState以获取UIApplicationStateInactive(当启动到前台时)或UIApplicationStateBackground(当启动到后台时)。然后调用applicationDidEnterBackground:而不是applicationDidBecomeActive:。
标签: ios iphone objective-c ios7 avplayer